diff --git a/sdnr/model/yang/README.md b/sdnr/model/yang/README.md
new file mode 100644
index 0000000..0b6525d
--- /dev/null
+++ b/sdnr/model/yang/README.md
@@ -0,0 +1,3 @@
+# CCSDK - apps - SDN-R - model - yang
+
+This folder contains yang modules used by CCSDK/SDN-R.
\ No newline at end of file
diff --git a/sdnr/model/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang b/sdnr/model/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang
new file mode 100644
index 0000000..4fe1b8d
--- /dev/null
+++ b/sdnr/model/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang
@@ -0,0 +1,17233 @@
+module bbf-tr-196-2-0-3-full {
+  namespace "urn:onf:otcc:wireless:yang:radio-access";
+  prefix ran;
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  organization
+    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Project";
+  contact
+    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+     WG List:  <mailto:wireless-transport@login.opennetworking.org>
+     WG Chair: Lyndon Ong         <mailto:lyong@ciena.com>
+     WG Chair: Giorgio Cazzaniga  <mailto:giorgio.cazzaniga@sm-optics.com>
+     Editors:  Ramakrishnan, Shanthakumar (Shanth) <Shanthakumar.Ramakrishnan@commscope.com>                    Martin Skorupski   <mailto:martin.skorupski@highstreet-technologies.com>";
+  description
+    "This module contains a collection of YANG definitions for managing radio access network (RAN) devices.";
+
+  revision 2018-04-08 {
+    description
+      "Initial version, used only for ONAP PoC 2018-06-25";
+    reference
+      "ONF TR ???: A YANG Data Model for Radio Access Networks.
+       BBF TR-196 2.0.3 full";
+  }
+
+  list fap-service {
+    key "alias";
+    uses fap-service-g;
+    container x-0005b9-lte {
+      uses x-0005b9-lte-g;
+    }
+    container capabilities {
+      uses capabilities-g;
+      description
+        "Container for object class FAPService.{i}.Capabilities.";
+      container capabilities-umts {
+        uses capabilities-umts-g;
+        description
+          "Container for object class FAPService.{i}.Capabilities.UMTS.";
+        container capabilities-umts-self-config {
+          uses capabilities-umts-self-config-g;
+          description
+            "Container for object class FAPService.{i}.Capabilities.UMTS.SelfConfig.";
+        }
+      }
+      container capabilities-lte {
+        uses capabilities-lte-g;
+        description
+          "Container for object class FAPService.{i}.Capabilities.LTE.";
+      }
+      container capabilities-cdma2000 {
+        uses capabilities-cdma2000-g;
+        description
+          "Container for object class FAPService.{i}.Capabilities.CDMA2000.";
+        container capabilities-cdma2000-one-x {
+          uses capabilities-cdma2000-one-x-g;
+          description
+            "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.";
+          container capabilities-cdma2000-one-x-self-config {
+            uses capabilities-cdma2000-one-x-self-config-g;
+            description
+              "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
+          }
+        }
+        container capabilities-cdma2000-hrpd {
+          uses capabilities-cdma2000-hrpd-g;
+          description
+            "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.";
+          container capabilities-cdma2000-hrpd-self-config {
+            uses capabilities-cdma2000-hrpd-self-config-g;
+            description
+              "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
+          }
+        }
+      }
+    }
+    container fap-control {
+      uses fap-control-g;
+      description
+        "Container for object class FAPService.{i}.FAPControl.";
+      container fap-control-umts {
+        uses fap-control-umts-g;
+        description
+          "Container for object class FAPService.{i}.FAPControl.UMTS.";
+        container fap-control-umts-self-config {
+          uses fap-control-umts-self-config-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.UMTS.SelfConfig.";
+        }
+        container fap-control-umts-gateway {
+          uses fap-control-umts-gateway-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.UMTS.Gateway.";
+        }
+      }
+      container fap-control-lte {
+        uses fap-control-lte-g;
+        description
+          "Container for object class FAPService.{i}.FAPControl.LTE.";
+        container fap-control-lte-gateway {
+          uses fap-control-lte-gateway-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.LTE.Gateway.";
+        }
+      }
+      container fap-control-cdma2000 {
+        uses fap-control-cdma2000-g;
+        description
+          "Container for object class FAPService.{i}.FAPControl.CDMA2000.";
+        container fap-control-cdma2000-time {
+          uses fap-control-cdma2000-time-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Time.";
+        }
+        container fap-control-cdma2000-one-x {
+          uses fap-control-cdma2000-one-x-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.";
+          container fap-control-cdma2000-one-x-active-handin-measurement {
+            uses fap-control-cdma2000-one-x-active-handin-measurement-g;
+            description
+              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
+          }
+          container fap-control-cdma2000-one-x-self-config {
+            uses fap-control-cdma2000-one-x-self-config-g;
+            description
+              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
+          }
+        }
+        container fap-control-cdma2000-gateway {
+          uses fap-control-cdma2000-gateway-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Gateway.";
+        }
+        container fap-control-cdma2000-hrpd {
+          uses fap-control-cdma2000-hrpd-g;
+          description
+            "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.";
+          container fap-control-cdma2000-hrpd-self-config {
+            uses fap-control-cdma2000-hrpd-self-config-g;
+            description
+              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
+          }
+          container fap-control-cdma2000-hrpd-a13 {
+            uses fap-control-cdma2000-hrpd-a13-g;
+            description
+              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
+            list fap-control-cdma2000-hrpd-a13-color-code-to-uati104 {
+              key "color-code uati104";
+              uses fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g;
+              description
+                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
+            }
+            list fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip {
+              key "a13-ip-address";
+              uses fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g;
+              description
+                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
+            }
+          }
+        }
+      }
+    }
+    container access-mgmt {
+      uses access-mgmt-g;
+      description
+        "Container for object class FAPService.{i}.AccessMgmt.";
+      container access-mgmt-umts {
+        uses access-mgmt-umts-g;
+        description
+          "Container for object class FAPService.{i}.AccessMgmt.UMTS.";
+        list access-mgmt-umts-member-detail {
+          key "imsi";
+          uses access-mgmt-umts-member-detail-g;
+          description
+            "List of object class FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
+        }
+        container access-mgmt-umts-local-ip-access {
+          uses access-mgmt-umts-local-ip-access-g;
+          description
+            "Container for object class FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
+        }
+      }
+      container access-mgmt-lte {
+        uses access-mgmt-lte-g;
+        description
+          "Container for object class FAPService.{i}.AccessMgmt.LTE.";
+        container access-mgmt-lte-local-ip-access {
+          uses access-mgmt-lte-local-ip-access-g;
+          description
+            "Container for object class FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
+        }
+      }
+      container access-mgmt-cdma2000 {
+        uses access-mgmt-cdma2000-g;
+        description
+          "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.";
+        list access-mgmt-cdma2000-member-detail {
+          key "imsi";
+          uses access-mgmt-cdma2000-member-detail-g;
+          description
+            "List of object class FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
+        }
+        container access-mgmt-cdma2000-local-ip-access {
+          uses access-mgmt-cdma2000-local-ip-access-g;
+          description
+            "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
+          container access-mgmt-cdma2000-local-ip-access-hrpd {
+            uses access-mgmt-cdma2000-local-ip-access-hrpd-g;
+            description
+              "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
+            list access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter {
+              key "subnet subnet-mask";
+              uses access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g;
+              description
+                "List of object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
+            }
+          }
+        }
+      }
+      container access-mgmt-legacy {
+        uses access-mgmt-legacy-g;
+        description
+          "Container for object class FAPService.{i}.AccessMgmt.Legacy.";
+        container access-mgmt-legacy-local-ip-access {
+          uses access-mgmt-legacy-local-ip-access-g;
+          description
+            "Container for object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
+          list access-mgmt-legacy-local-ip-access-rule {
+            key "dest-ip-address dest-subnet-mask protocol";
+            uses access-mgmt-legacy-local-ip-access-rule-g;
+            description
+              "List of object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
+          }
+        }
+      }
+    }
+    container cell-config {
+      uses cell-config-g;
+      description
+        "Container for object class FAPService.{i}.CellConfig.";
+      container umts {
+        uses umts-g;
+        description
+          "Container for object class FAPService.{i}.CellConfig.UMTS.";
+        container umts-cn {
+          uses umts-cn-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.UMTS.CN.";
+          container umts-cn-cs-domain {
+            uses umts-cn-cs-domain-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
+          }
+          container umts-cn-ps-domain {
+            uses umts-cn-ps-domain-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
+          }
+        }
+        container umts-ran {
+          uses umts-ran-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.";
+          container umts-ran-csg {
+            uses umts-ran-csg-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
+            container umts-ran-csg-csgpsc-split-info {
+              uses umts-ran-csg-csgpsc-split-info-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
+            }
+          }
+          container umts-ran-cell-selection {
+            uses umts-ran-cell-selection-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
+          }
+          container umts-ran-rrc-timers {
+            uses umts-ran-rrc-timers-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
+          }
+          container umts-ran-drx {
+            uses umts-ran-drx-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
+          }
+          container umts-ran-power-control {
+            uses umts-ran-power-control-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
+          }
+          container umts-ran-cell-restriction {
+            uses umts-ran-cell-restriction-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
+          }
+          container umts-ran-intra-freq-meas {
+            uses umts-ran-intra-freq-meas-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
+            list umts-ran-intra-freq-meas-instance {
+              key "intra-frequency-event-identity";
+              uses umts-ran-intra-freq-meas-instance-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
+            }
+          }
+          container umts-ran-inter-freq-meas {
+            uses umts-ran-inter-freq-meas-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
+            list umts-ran-inter-freq-meas-instance {
+              key "intra-frequency-event-identity";
+              uses umts-ran-inter-freq-meas-instance-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
+            }
+          }
+          container umts-ran-inter-rat-meas {
+            uses umts-ran-inter-rat-meas-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
+            list umts-ran-inter-rat-meas-instance {
+              key "inter-rat-event-identity";
+              uses umts-ran-inter-rat-meas-instance-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
+            }
+          }
+          container umts-ran-ue-internal-meas {
+            uses umts-ran-ue-internal-meas-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
+          }
+          container umts-ran-rf {
+            uses umts-ran-rf-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RF.";
+          }
+          container umts-ran-neighbor-list {
+            uses umts-ran-neighbor-list-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
+            list umts-ran-neighbor-list-intra-freq-cell {
+              key "pcpich-scrambling-code";
+              uses umts-ran-neighbor-list-intra-freq-cell-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
+            }
+            list umts-ran-neighbor-list-inter-freq-cell {
+              key "pcpich-scrambling-code uarfcndl";
+              uses umts-ran-neighbor-list-inter-freq-cell-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
+            }
+            container umts-ran-neighbor-list-inter-rat-cell {
+              uses umts-ran-neighbor-list-inter-rat-cell-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
+              list umts-ran-neighbor-list-inter-rat-cell-gsm {
+                key "bccharfcn";
+                uses umts-ran-neighbor-list-inter-rat-cell-gsm-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
+              }
+            }
+          }
+          container umts-ran-neighbor-list-in-use {
+            uses umts-ran-neighbor-list-in-use-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
+            list umts-ran-neighbor-list-in-use-intra-freq-cell {
+              key "pcpich-scrambling-code";
+              uses umts-ran-neighbor-list-in-use-intra-freq-cell-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
+            }
+            list umts-ran-neighbor-list-in-use-inter-freq-cell {
+              key "pcpich-scrambling-code uarfcndl";
+              uses umts-ran-neighbor-list-in-use-inter-freq-cell-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
+            }
+            container umts-ran-neighbor-list-in-use-inter-rat-cell {
+              uses umts-ran-neighbor-list-in-use-inter-rat-cell-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
+              list umts-ran-neighbor-list-in-use-inter-rat-cell-gsm {
+                key "bccharfcn";
+                uses umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
+              }
+            }
+          }
+        }
+        container umts-rab {
+          uses umts-rab-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.UMTS.RAB.";
+        }
+      }
+      container lte {
+        uses lte-g;
+        description
+          "Container for object class FAPService.{i}.CellConfig.LTE.";
+        list lte-tunnel {
+          key "tunnel-ref";
+          uses lte-tunnel-g;
+          description
+            "List of object class FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
+        }
+        container lte-epc {
+          uses lte-epc-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.LTE.EPC.";
+          list lte-epc-plmn-list {
+            key "plmnid";
+            uses lte-epc-plmn-list-g;
+            description
+              "List of object class FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
+          }
+          list lte-epc-qo-s {
+            key "qci";
+            uses lte-epc-qo-s-g;
+            description
+              "List of object class FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
+          }
+        }
+        container lte-ran {
+          uses lte-ran-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.LTE.RAN.";
+          container lte-ran-common {
+            uses lte-ran-common-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Common.";
+          }
+          container lte-ran-s1-ap {
+            uses lte-ran-s1-ap-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
+          }
+          container lte-ran-s1-u {
+            uses lte-ran-s1-u-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1U.";
+          }
+          container lte-ran-rf {
+            uses lte-ran-rf-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RF.";
+          }
+          container lte-ran-phy {
+            uses lte-ran-phy-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.";
+            container lte-ran-phy-antenna-info {
+              uses lte-ran-phy-antenna-info-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
+            }
+            container lte-ran-phy-pdsch {
+              uses lte-ran-phy-pdsch-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
+            }
+            container lte-ran-phy-srs {
+              uses lte-ran-phy-srs-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
+            }
+            container lte-ran-phy-prach {
+              uses lte-ran-phy-prach-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
+            }
+            container lte-ran-phy-pucch {
+              uses lte-ran-phy-pucch-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
+            }
+            container lte-ran-phy-pusch {
+              uses lte-ran-phy-pusch-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
+              container lte-ran-phy-pusch-ulrs {
+                uses lte-ran-phy-pusch-ulrs-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
+              }
+            }
+            container lte-ran-phy-ul-power-control {
+              uses lte-ran-phy-ul-power-control-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
+            }
+            container lte-ran-phy-mbsfn {
+              uses lte-ran-phy-mbsfn-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
+              list lte-ran-phy-mbsfn-sf-config-list {
+                key "radio-frame-allocation-period radioframe-allocation-offset radio-frame-allocation-size";
+                uses lte-ran-phy-mbsfn-sf-config-list-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
+              }
+            }
+            container lte-ran-phy-prs {
+              uses lte-ran-phy-prs-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
+            }
+            container lte-ran-phy-tdd-frame {
+              uses lte-ran-phy-tdd-frame-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
+            }
+          }
+          container lte-ran-mac {
+            uses lte-ran-mac-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.";
+            container lte-ran-mac-rach {
+              uses lte-ran-mac-rach-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
+            }
+            container lte-ran-mac-drx {
+              uses lte-ran-mac-drx-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
+            }
+            container lte-ran-mac-ulsch {
+              uses lte-ran-mac-ulsch-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
+            }
+          }
+          container lte-ran-rlc {
+            uses lte-ran-rlc-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.";
+            container lte-ran-rlc-srb1 {
+              uses lte-ran-rlc-srb1-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
+            }
+            container lte-ran-rlc-srb2 {
+              uses lte-ran-rlc-srb2-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
+            }
+          }
+          container lte-ran-rrc-timers {
+            uses lte-ran-rrc-timers-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
+          }
+          container lte-ran-cell-restriction {
+            uses lte-ran-cell-restriction-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
+          }
+          container lte-ran-mobility {
+            uses lte-ran-mobility-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
+            container lte-ran-mobility-idle-mode {
+              uses lte-ran-mobility-idle-mode-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
+              container lte-ran-mobility-idle-mode-common {
+                uses lte-ran-mobility-idle-mode-common-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
+              }
+              container lte-ran-mobility-idle-mode-intra-freq {
+                uses lte-ran-mobility-idle-mode-intra-freq-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
+              }
+              container lte-ran-mobility-idle-mode-inter-freq {
+                uses lte-ran-mobility-idle-mode-inter-freq-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
+                list lte-ran-mobility-idle-mode-inter-freq-carrier {
+                  key "eutra-carrier-arfcn";
+                  uses lte-ran-mobility-idle-mode-inter-freq-carrier-g;
+                  description
+                    "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
+                }
+              }
+              container lte-ran-mobility-idle-mode-irat {
+                uses lte-ran-mobility-idle-mode-irat-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
+                container lte-ran-mobility-idle-mode-irat-utra {
+                  uses lte-ran-mobility-idle-mode-irat-utra-g;
+                  description
+                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
+                  list lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq {
+                    key "utra-carrier-arfcn";
+                    uses lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g;
+                    description
+                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
+                  }
+                }
+                container lte-ran-mobility-idle-mode-irat-geran {
+                  uses lte-ran-mobility-idle-mode-irat-geran-g;
+                  description
+                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
+                  list lte-ran-mobility-idle-mode-irat-geran-geran-freq-group {
+                    key "bccharfcn";
+                    uses lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g;
+                    description
+                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
+                  }
+                }
+                container lte-ran-mobility-idle-mode-irat-cdma2000 {
+                  uses lte-ran-mobility-idle-mode-irat-cdma2000-g;
+                  description
+                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
+                  list lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band {
+                    key "band-class";
+                    uses lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g;
+                    description
+                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
+                  }
+                }
+              }
+            }
+            container lte-ran-mobility-conn-mode {
+              uses lte-ran-mobility-conn-mode-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
+              container lte-ran-mobility-conn-mode-eutra {
+                uses lte-ran-mobility-conn-mode-eutra-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
+              }
+              container lte-ran-mobility-conn-mode-irat {
+                uses lte-ran-mobility-conn-mode-irat-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
+              }
+            }
+          }
+          container lte-ran-neighbor-list {
+            uses lte-ran-neighbor-list-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
+            list lte-ran-neighbor-list-lte-cell {
+              key "plmnid cid";
+              uses lte-ran-neighbor-list-lte-cell-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
+            }
+            container lte-ran-neighbor-list-inter-rat-cell {
+              uses lte-ran-neighbor-list-inter-rat-cell-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
+              list lte-ran-neighbor-list-inter-rat-cell-umts {
+                key "plmnid cid";
+                uses lte-ran-neighbor-list-inter-rat-cell-umts-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
+              }
+              list lte-ran-neighbor-list-inter-rat-cell-gsm {
+                key "plmnid lac ci";
+                uses lte-ran-neighbor-list-inter-rat-cell-gsm-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
+              }
+              list lte-ran-neighbor-list-inter-rat-cell-cdma2000 {
+                key "cid";
+                uses lte-ran-neighbor-list-inter-rat-cell-cdma2000-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
+              }
+            }
+          }
+          container lte-ran-neighbor-list-in-use {
+            uses lte-ran-neighbor-list-in-use-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
+            list lte-ran-neighbor-list-in-use-lte-cell {
+              key "plmnid cid";
+              uses lte-ran-neighbor-list-in-use-lte-cell-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
+            }
+            container lte-ran-neighbor-list-in-use-inter-rat-cell {
+              uses lte-ran-neighbor-list-in-use-inter-rat-cell-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
+              list lte-ran-neighbor-list-in-use-inter-rat-cell-umts {
+                key "plmnid cid";
+                uses lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
+              }
+              list lte-ran-neighbor-list-in-use-inter-rat-cell-gsm {
+                key "plmnid lac ci";
+                uses lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
+              }
+              list lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000 {
+                key "cid";
+                uses lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
+              }
+            }
+          }
+        }
+      }
+      container cdma2000 {
+        uses cdma2000-g;
+        description
+          "Container for object class FAPService.{i}.CellConfig.CDMA2000.";
+        container cdma2000-one-x {
+          uses cdma2000-one-x-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.";
+          container cdma2000-one-x-ran {
+            uses cdma2000-one-x-ran-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
+            container cdma2000-one-x-ran-rf {
+              uses cdma2000-one-x-ran-rf-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
+            }
+            container cdma2000-one-x-ran-network-listen-mode-config {
+              uses cdma2000-one-x-ran-network-listen-mode-config-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
+            }
+            container cdma2000-one-x-ran-access-parameters {
+              uses cdma2000-one-x-ran-access-parameters-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
+            }
+            container cdma2000-one-x-ran-system-parameters {
+              uses cdma2000-one-x-ran-system-parameters-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
+            }
+            container cdma2000-one-x-ran-extended-system-parameters {
+              uses cdma2000-one-x-ran-extended-system-parameters-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
+            }
+            container cdma2000-one-x-ran-forward-pwr-ctr {
+              uses cdma2000-one-x-ran-forward-pwr-ctr-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
+            }
+            container cdma2000-one-x-ran-hard-handoff {
+              uses cdma2000-one-x-ran-hard-handoff-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
+              container cdma2000-one-x-ran-hard-handoff-stats {
+                uses cdma2000-one-x-ran-hard-handoff-stats-g;
+                description
+                  "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
+              }
+            }
+            container cdma2000-one-x-ran-power-control {
+              uses cdma2000-one-x-ran-power-control-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
+            }
+            list cdma2000-one-x-ran-neighbor-list {
+              key "one-x-neighbor-index neighbor-pn";
+              uses cdma2000-one-x-ran-neighbor-list-g;
+              description
+                "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
+            }
+            container cdma2000-one-x-ran-apidm {
+              uses cdma2000-one-x-ran-apidm-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
+            }
+            container cdma2000-one-x-ran-apidtm {
+              uses cdma2000-one-x-ran-apidtm-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
+            }
+            container cdma2000-one-x-ran-appim {
+              uses cdma2000-one-x-ran-appim-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
+              list cdma2000-one-x-ran-appim-appirec {
+                key "apsid apnid apband apfreq appnrectype appnreclen appnrec";
+                uses cdma2000-one-x-ran-appim-appirec-g;
+                description
+                  "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
+              }
+            }
+          }
+          container cdma2000-one-x-pcf-config {
+            uses cdma2000-one-x-pcf-config-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
+            container cdma2000-one-x-pcf-config-pcf-performance-stats {
+              uses cdma2000-one-x-pcf-config-pcf-performance-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
+            }
+          }
+          list cdma2000-one-x-batch-pcfpdsn {
+            key "batch-table-number";
+            uses cdma2000-one-x-batch-pcfpdsn-g;
+            description
+              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
+          }
+          list cdma2000-one-x-pcfpdsn {
+            key "pdsn-number security-parameter-index security-key";
+            uses cdma2000-one-x-pcfpdsn-g;
+            container cdma2000-one-x-pcfpdsn-a11-reg-update-stats {
+              uses cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
+            }
+            container cdma2000-one-x-pcfpdsn-pcfpdsn-stats {
+              uses cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
+            }
+            description
+              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
+          }
+          container cdma2000-one-x-stats {
+            uses cdma2000-one-x-stats-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
+          }
+          container cdma2000-one-x-redirect {
+            uses cdma2000-one-x-redirect-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
+          }
+        }
+        container cdma2000-hrpd {
+          uses cdma2000-hrpd-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.";
+          container cdma2000-hrpd-ran {
+            uses cdma2000-hrpd-ran-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
+            container cdma2000-hrpd-ran-rf {
+              uses cdma2000-hrpd-ran-rf-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
+            }
+          }
+          container cdma2000-hrpd-pcf-config {
+            uses cdma2000-hrpd-pcf-config-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
+            container cdma2000-hrpd-pcf-config-pcf-performance-stats {
+              uses cdma2000-hrpd-pcf-config-pcf-performance-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
+            }
+          }
+          list cdma2000-hrpd-batch-pcfpdsn {
+            key "batch-table-number batch-table-security-parameter-index batch-table-secret-key";
+            uses cdma2000-hrpd-batch-pcfpdsn-g;
+            description
+              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
+          }
+          list cdma2000-hrpd-pcfpdsn {
+            key "pdsn-number security-parameter-index security-key";
+            uses cdma2000-hrpd-pcfpdsn-g;
+            container cdma2000-hrpd-pcfpdsn-a11-session-update-stats {
+              uses cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
+            }
+            container cdma2000-hrpd-pcfpdsn-a11-reg-update-stats {
+              uses cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
+            }
+            container cdma2000-hrpd-pcfpdsn-aux-a10-stats {
+              uses cdma2000-hrpd-pcfpdsn-aux-a10-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
+            }
+            container cdma2000-hrpd-pcfpdsn-pcfpdsn-stats {
+              uses cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g;
+              description
+                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
+            }
+            description
+              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
+          }
+          container cdma2000-hrpd-redirect {
+            uses cdma2000-hrpd-redirect-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
+          }
+          container cdma2000-hrpd-call-control-stats {
+            uses cdma2000-hrpd-call-control-stats-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
+          }
+          container cdma2000-hrpd-qo-s-stats {
+            uses cdma2000-hrpd-qo-s-stats-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
+          }
+          container cdma2000-hrpd-rnc-sig-apps-stats {
+            uses cdma2000-hrpd-rnc-sig-apps-stats-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
+          }
+          container cdma2000-hrpd-access-auth-config {
+            uses cdma2000-hrpd-access-auth-config-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
+          }
+          container cdma2000-hrpd-access-auth-stats {
+            uses cdma2000-hrpd-access-auth-stats-g;
+            description
+              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
+          }
+        }
+        container cdma2000-beacon {
+          uses cdma2000-beacon-g;
+          description
+            "Container for object class FAPService.{i}.CellConfig.CDMA2000.Beacon.";
+          list cdma2000-beacon-beacon-list {
+            key "beacon-index";
+            uses cdma2000-beacon-beacon-list-g;
+            description
+              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
+          }
+          list cdma2000-beacon-hrpd-beacon-list {
+            key "beacon-index";
+            uses cdma2000-beacon-hrpd-beacon-list-g;
+            description
+              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
+          }
+        }
+      }
+    }
+    container rem {
+      uses rem-g;
+      description
+        "Container for object class FAPService.{i}.REM.";
+      container rem-umts {
+        uses rem-umts-g;
+        description
+          "Container for object class FAPService.{i}.REM.UMTS.";
+        container rem-umts-wcdma {
+          uses rem-umts-wcdma-g;
+          description
+            "Container for object class FAPService.{i}.REM.UMTS.WCDMA.";
+          list rem-umts-wcdma-cell {
+            key "rem-umts-wcdma-cell-key";
+            uses rem-umts-wcdma-cell-g;
+            container rem-umts-wcdma-cell-rf {
+              uses rem-umts-wcdma-cell-rf-g;
+              description
+                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
+            }
+            container rem-umts-wcdma-cell-bcch {
+              uses rem-umts-wcdma-cell-bcch-g;
+              description
+                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
+              container rem-umts-wcdma-cell-bcch-csgpsc-split-info {
+                uses rem-umts-wcdma-cell-bcch-csgpsc-split-info-g;
+                description
+                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
+              }
+              container rem-umts-wcdma-cell-bcch-reference-position {
+                uses rem-umts-wcdma-cell-bcch-reference-position-g;
+                description
+                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
+              }
+            }
+            description
+              "List of object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
+          }
+        }
+        container rem-umts-gsm {
+          uses rem-umts-gsm-g;
+          description
+            "Container for object class FAPService.{i}.REM.UMTS.GSM.";
+          list rem-umts-gsm-cell {
+            key "arfcn bsic";
+            uses rem-umts-gsm-cell-g;
+            description
+              "List of object class FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
+          }
+        }
+      }
+      container rem-lte {
+        uses rem-lte-g;
+        description
+          "Container for object class FAPService.{i}.REM.LTE.";
+        list rem-lte-cell {
+          key "rem-lte-cell-key";
+          uses rem-lte-cell-g;
+          container rem-lte-cell-rf {
+            uses rem-lte-cell-rf-g;
+            description
+              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.RF.";
+          }
+          container rem-lte-cell-bcch {
+            uses rem-lte-cell-bcch-g;
+            description
+              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
+            list rem-lte-cell-bcch-plmn-list {
+              key "plmnid";
+              uses rem-lte-cell-bcch-plmn-list-g;
+              description
+                "List of object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
+            }
+          }
+          description
+            "List of object class FAPService.{i}.REM.LTE.Cell.{i}.";
+        }
+        list rem-lte-carrier-meas {
+          key "carrier-arfcndl carrier-ch-width";
+          uses rem-lte-carrier-meas-g;
+          description
+            "List of object class FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
+        }
+      }
+      container rem-cdma2000 {
+        uses rem-cdma2000-g;
+        description
+          "Container for object class FAPService.{i}.REM.CDMA2000.";
+        container rem-cdma2000-one-x {
+          uses rem-cdma2000-one-x-g;
+          description
+            "Container for object class FAPService.{i}.REM.CDMA2000.OneX.";
+          list rem-cdma2000-one-x-channel {
+            key "sniffing-band-class sniffing-channel-number";
+            uses rem-cdma2000-one-x-channel-g;
+            description
+              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
+          }
+          list rem-cdma2000-one-x-cell {
+            key "rem-cdma2000-one-x-cell-key";
+            uses rem-cdma2000-one-x-cell-g;
+            container rem-cdma2000-one-x-cell-rf {
+              uses rem-cdma2000-one-x-cell-rf-g;
+              description
+                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
+            }
+            container rem-cdma2000-one-x-cell-control-channel {
+              uses rem-cdma2000-one-x-cell-control-channel-g;
+              description
+                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
+            }
+            description
+              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
+          }
+        }
+        container rem-cdma2000-hrpd {
+          uses rem-cdma2000-hrpd-g;
+          description
+            "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.";
+          list rem-cdma2000-hrpd-channel {
+            key "sniffing-band-class sniffing-channel-number";
+            uses rem-cdma2000-hrpd-channel-g;
+            description
+              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
+          }
+          list rem-cdma2000-hrpd-cell {
+            key "rem-cdma2000-hrpd-cell-key";
+            uses rem-cdma2000-hrpd-cell-g;
+            container rem-cdma2000-hrpd-cell-rf {
+              uses rem-cdma2000-hrpd-cell-rf-g;
+              description
+                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
+            }
+            container rem-cdma2000-hrpd-cell-control-channel {
+              uses rem-cdma2000-hrpd-cell-control-channel-g;
+              description
+                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
+            }
+            description
+              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
+          }
+        }
+        container rem-cdma2000-macro-timing {
+          uses rem-cdma2000-macro-timing-g;
+          description
+            "Container for object class FAPService.{i}.REM.CDMA2000.MacroTiming.";
+          list rem-cdma2000-macro-timing-channel {
+            key "band-class channel-number";
+            uses rem-cdma2000-macro-timing-channel-g;
+            description
+              "List of object class FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
+          }
+        }
+      }
+    }
+    container transport {
+      uses transport-g;
+      description
+        "Container for object class FAPService.{i}.Transport.";
+      container transport-sip {
+        uses transport-sip-g;
+        description
+          "Container for object class FAPService.{i}.Transport.SIP.";
+        container transport-sip-fcs {
+          uses transport-sip-fcs-g;
+          description
+            "Container for object class FAPService.{i}.Transport.SIP.FCS.";
+        }
+      }
+      container transport-sctp {
+        uses transport-sctp-g;
+        description
+          "Container for object class FAPService.{i}.Transport.SCTP.";
+        list transport-sctp-assoc {
+          key "primary-peer-address local-port";
+          uses transport-sctp-assoc-g;
+          description
+            "List of object class FAPService.{i}.Transport.SCTP.Assoc.{i}.";
+        }
+      }
+      container transport-real-time {
+        uses transport-real-time-g;
+        description
+          "Container for object class FAPService.{i}.Transport.RealTime.";
+        container transport-real-time-perf {
+          uses transport-real-time-perf-g;
+          description
+            "Container for object class FAPService.{i}.Transport.RealTime.Perf.";
+        }
+      }
+      container transport-packet {
+        uses transport-packet-g;
+        description
+          "Container for object class FAPService.{i}.Transport.Packet.";
+      }
+      container transport-security {
+        uses transport-security-g;
+        description
+          "Container for object class FAPService.{i}.Transport.Security.";
+        list transport-security-secret {
+          key "uicc-card-id";
+          uses transport-security-secret-g;
+          description
+            "List of object class FAPService.{i}.Transport.Security.Secret.{i}.";
+        }
+      }
+    }
+    description
+      "List of object class FAPService.{i}.";
+  }
+
+  grouping fap-service-g {
+    description
+      "The Femto Access Point (FAP) Service Object.";
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Alias";
+    }
+    leaf device-type {
+      type enumeration {
+        enum "standalone" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Standalone";
+        }
+        enum "integrated" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Integrated";
+        }
+      }
+      description
+        "The type of FAP device.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType";
+    }
+    leaf dn-prefix {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The Distinguished Name prefix (DNPrefix) is an operator-configurable prefix string that is pre-pended to object distinguished names in the {{bibref|TR-157a5}} alarm object. See {{bibref|3GPP-TS.32.300}} for the formal definition and examples of DNPrefix as applied to 3GPP alarm objects";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DNPrefix";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.";
+  }
+
+  grouping x-0005b9-lte-g {
+    leaf phy-cell-id-in-use {
+      type uint64;
+      default 0;
+    }
+  }
+  grouping capabilities-g {
+    description
+      "This object contains parameters relating to the hardware capabilities of the FAP device.";
+    leaf gps-equipped {
+      type boolean;
+      description
+        "Indicates whether the FAP is equipped with a GPS receiver or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.GPSEquipped";
+    }
+    leaf max-tx-power {
+      type uint64;
+      units "dBm";
+      description
+        "Indicates the maximum possible transmit power in {{units}} that the FAP hardware can support.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.MaxTxPower";
+    }
+    leaf-list supported-systems {
+      type enumeration {
+        enum "umts" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - UMTS";
+        }
+        enum "lte" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - LTE";
+        }
+        enum "cdma1x" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMA1x";
+        }
+        enum "cdmahrpd" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMAHRPD";
+        }
+      }
+      description
+        "{{list}} Each entry is a type of system that the FAP supports. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems";
+    }
+    leaf beacon {
+      type boolean;
+      description
+        "Indicates whether FAP can support beacon transmission.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.Beacon";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.";
+  }
+
+  grouping capabilities-umts-g {
+    description
+      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the UMTS system.";
+    leaf duplex-mode {
+      type enumeration {
+        enum "fdd-mode" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode - FDDMode";
+        }
+      }
+      description
+        "Indicates the mode supported by the FAP. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode";
+    }
+    leaf gsm-rx-supported {
+      type boolean;
+      description
+        "Indicates whether the FAP hardware supports the receiving function of GSM or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxSupported";
+    }
+    leaf hsdpa-supported {
+      type boolean;
+      description
+        "Indicates whether the FAP hardware supports the HSDPA capability or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSDPASupported";
+    }
+    leaf max-hsdpa-data-rate-supported {
+      type uint64;
+      units "Kbps";
+      description
+        "If the FAP hardware supports HSDPA ({{param|HSDPASupported}} is {{true}}), this parameter indicates the maximum HSDPA data rate in {{units}} that the device supports.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSDPADataRateSupported";
+    }
+    leaf hsupa-supported {
+      type boolean;
+      description
+        "Indicates whether the FAP hardware supports the HSUPA capability or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSUPASupported";
+    }
+    leaf max-hsupa-data-rate-supported {
+      type uint64;
+      units "Kbps";
+      description
+        "If the FAP hardware supports HSUPA ({{param|HSUPASupported}} is {{true}}), this parameter indicates the maximum HSUPA data rate in {{units}} that the device supports.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSUPADataRateSupported";
+    }
+    leaf max-hspdsc-hs-supported {
+      type uint8 {
+        range "0..15";
+      }
+      description
+        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of codes at the defined spreading factor (SF=16), within the complete code tree. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSPDSCHsSupported";
+    }
+    leaf max-hsscc-hs-supported {
+      type uint64;
+      description
+        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of HS-SCCHs for one cell. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSSCCHsSupported";
+    }
+    leaf-list fdd-bands-supported {
+      type string;
+      min-elements 1;
+      max-elements "16";
+      description
+        "{{list}} Indicates the UMTS bands that the FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.25.104}} Version 8.3.0 defines 14 UMTS bands (I through XIV). Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.FDDBandsSupported";
+    }
+    leaf-list gsm-rx-bands-supported {
+      type enumeration {
+        enum "t-gsm380" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM380";
+        }
+        enum "t-gsm410" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM410";
+        }
+        enum "gsm450" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM450";
+        }
+        enum "gsm480" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM480";
+        }
+        enum "gsm710" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM710";
+        }
+        enum "gsm750" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM750";
+        }
+        enum "t-gsm810" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM810";
+        }
+        enum "gsm850" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM850";
+        }
+        enum "p-gsm900" {
+          value 9;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - P-GSM900";
+        }
+        enum "e-gsm900" {
+          value 10;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - E-GSM900";
+        }
+        enum "r-gsm900" {
+          value 11;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - R-GSM900";
+        }
+        enum "t-gsm900" {
+          value 12;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM900";
+        }
+        enum "dcs1800" {
+          value 13;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - DCS1800";
+        }
+        enum "pcs1900" {
+          value 14;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - PCS1900";
+        }
+      }
+      description
+        "{{list}} Indicates the GSM receive bands that the FAP supports {{bibref|3GPP-TS.45.005}}. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.";
+  }
+
+  grouping capabilities-umts-self-config-g {
+    description
+      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.UMTS.SelfConfig.}}";
+    leaf uarfcn-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the UTRA Absolute Radio Frequency Channel Number (UARFCN). If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UARFCNConfig";
+    }
+    leaf primary-scrambling-code-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Primary Scrambling Code (PSC). If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig";
+    }
+    leaf maxfap-tx-power-expanded-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig";
+    }
+    leaf pcpich-power-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the P-CPICH power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} as an upper bound.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig";
+    }
+    leaf max-ul-tx-power-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum UL Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig";
+    }
+    leaf lacracura-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the LAC, RAC, and URA. If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.LACRACURAConfig";
+    }
+    leaf neighbor-list-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the neighbor list. If {{true}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to explicitly include or exclude entries and the FAP uses that information to determine the final configuration found in the {{object|.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.}} tables. If {{false}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to only specify the included entries and the FAP uses that list.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NeighborListConfig";
+    }
+    leaf cell-re-selection-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine cell-reselection values. If {{true}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} is provided by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.CellReSelectionConfig";
+    }
+    leaf intra-freq-meas-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine intra-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} is provided by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.IntraFreqMeasConfig";
+    }
+    leaf inter-freq-meas-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine inter-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} is provided by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterFreqMeasConfig";
+    }
+    leaf inter-rat-meas-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine inter-RAT measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} is provided by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterRATMeasConfig";
+    }
+    leaf ue-internal-meas-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine UE internal measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} is provided by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UEInternalMeasConfig";
+    }
+    leaf noise-rise-limit-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the selfconfiguration capability to determine the Noise Rise Limit. If {{true}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. MAY provide a range of values to select from. If {{false}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} provides only a single value to be used. The value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} is ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.";
+  }
+
+  grouping capabilities-lte-g {
+    description
+      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the LTE system.";
+    leaf duplex-mode {
+      type enumeration {
+        enum "fdd-mode" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - FDDMode";
+        }
+        enum "tdd-mode" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - TDDMode";
+        }
+      }
+      description
+        "Indicates the mode supported by the LTE FAP. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode";
+    }
+    leaf-list bands-supported {
+      type uint8 {
+        range "1..21 | 33..40";
+      }
+      min-elements 1;
+      max-elements "16";
+      description
+        "{{list}} Indicates the LTE bands that the LTE FAP supports {{bibref|3GPP-TS.36.101|Section 5.5}}. At least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by arabic number (1, 2,...). The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.36.101}}, the corresponding new band number will be included in the valid band indicators. The followings are examples of valid values: :\"1\" (specifies only band-1 is supported) :\"1,2,11\" (specifies 3 bands are supported) :\"2,11,1\" (specifies 3 bands are supported)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.BandsSupported";
+    }
+    leaf nnsf-supported {
+      type boolean;
+      description
+        "Indicates whether LTE FAP supports the NAS Node Selection Function (NNSF) or not. NNSF is described in {{bibref|3GPP-TS.36.300|Section 19.2.1.7 and Section 4.6.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.NNSFSupported";
+    }
+    leaf umts-rx-supported {
+      type boolean;
+      description
+        "Indicates whether the LTE FAP hardware supports the receiving function of UMTS or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxSupported";
+    }
+    leaf-list umts-rx-bands-supported {
+      type string;
+      max-elements "16";
+      description
+        "{{list}} Indicates the UMTS receive bands that the LTE FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. If {{param|UMTSRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxBandsSupported";
+    }
+    leaf gsm-rx-supported {
+      type boolean;
+      description
+        "Indicates whether the LTE FAP hardware supports the receiving function of GSM or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxSupported";
+    }
+    leaf-list gsm-rx-bands-supported {
+      type enumeration {
+        enum "t-gsm380" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM380";
+        }
+        enum "t-gsm410" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM410";
+        }
+        enum "gsm450" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM450";
+        }
+        enum "gsm480" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM480";
+        }
+        enum "gsm710" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM710";
+        }
+        enum "gsm750" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM750";
+        }
+        enum "t-gsm810" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM810";
+        }
+        enum "gsm850" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM850";
+        }
+        enum "p-gsm900" {
+          value 9;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - P-GSM900";
+        }
+        enum "e-gsm900" {
+          value 10;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - E-GSM900";
+        }
+        enum "r-gsm900" {
+          value 11;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - R-GSM900";
+        }
+        enum "t-gsm900" {
+          value 12;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM900";
+        }
+        enum "dcs1800" {
+          value 13;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - DCS1800";
+        }
+        enum "pcs1900" {
+          value 14;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - PCS1900";
+        }
+      }
+      description
+        "{{list}} Indicates the GSM receive bands that the LTE FAP supports {{bibref|3GPP-TS.45.005}}. If {{param|GSMRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported";
+    }
+    leaf cdma2000-rx-supported {
+      type boolean;
+      description
+        "Indicates whether the LTE FAP hardware supports the receiving function of CDMA2000 or not.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxSupported";
+    }
+    leaf-list cdma2000-rx-bands-supported {
+      type string;
+      max-elements "16";
+      description
+        "{{list}} Indicates the CDMA2000 receive bands that the LTE FAP supports. If {{param|CDMA2000RxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. The order of the band indicators in the string has no significance. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057-B}}. The following are example values: :\"0\" (specifies US Cellular) :\"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz) specifies 3 bands are supported)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxBandsSupported";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.";
+  }
+
+  grouping capabilities-cdma2000-g {
+    description
+      "This object contains parameters relating to the capability attributes for CDMA2000 FAP.";
+    leaf remote-ip-access-capable {
+      type boolean;
+      description
+        "Indicates whether the FAP is capable of providing remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}}, the FAP is capable of remote IP access service. If {{false}}, the FAP is not capable of remote IP access service.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.RemoteIPAccessCapable";
+    }
+    leaf-list band-class-supportedfap-beacon {
+      type string;
+      max-elements "32";
+      description
+        "{{list}} Indicates the band classes that the FAP supports for beacon transmission. One or multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. List is empty if FAP can not support beacon transmissions.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.BandClassSupportedFAPBeacon";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.";
+  }
+
+  grouping capabilities-cdma2000-one-x-g {
+    description
+      "This object contains parameters relating to the capability attributes for the CDMA2000 1x radio technology portions of a CDMA2000 FAP.";
+    leaf band-class-supportedfap {
+      type string {
+        length "0..32";
+      }
+      description
+        "{{list}} Indicates the CDMA bands that the FAP supports. At least one band MUST be supported and multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. The following are example values: \"0\" (specifies US Cellular) \"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.BandClassSupportedFAP";
+    }
+    leaf active-handin-capable {
+      type boolean;
+      description
+        "Indicates whether the FAP is capable of accepting hand-in of active 1x call from another base station. If {{true}}, the FAP is capable of accepting hand-in. If {{false}}, the FAP is not capable of accepting hand-in.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.ActiveHandinCapable";
+    }
+    leaf femto-overhead-messages-capable {
+      type boolean;
+      description
+        "Indicates whether the FAP supports Access Point Identification, Access Point Pilot Information, and Access Point Identification Text messages specified in {{bibref|3GPP2-C.S0005}}. If {{true}}, the FAP supports these messages. If {{false}}, the FAP does not supports these messages.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.";
+  }
+
+  grouping capabilities-cdma2000-one-x-self-config-g {
+    description
+      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}.";
+    leaf rfcnfl-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig";
+    }
+    leaf pilot-pn-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig";
+    }
+    leaf maxfap-tx-power-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig";
+    }
+    leaf maxfap-beacon-tx-power-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
+  }
+
+  grouping capabilities-cdma2000-hrpd-g {
+    description
+      "This object contains parameters relating to the capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
+    leaf a13-session-transfer-capable {
+      type boolean;
+      description
+        "Indicates whether the FAP is capable of supporting A13 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A13SessionTransferCapable";
+    }
+    leaf a16-session-transfer-capable {
+      type boolean;
+      description
+        "Indicates whether the FAP is capable of supporting A16 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A16SessionTransferCapable";
+    }
+    leaf local-ip-access-capable {
+      type boolean;
+      description
+        "Indicates whether the FAP is capable of supporting Local IP access. See {{bibref|3GPP2-C.S0024-B}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.LocalIPAccessCapable";
+    }
+    leaf dedicated-hrpd-beacon {
+      type boolean;
+      description
+        "Indicated whether the FAP supports a dedicated transmission of HRPD beacon independent of the generalized beacon.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.DedicatedHRPDBeacon";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.";
+  }
+
+  grouping capabilities-cdma2000-hrpd-self-config-g {
+    description
+      "This object contains parameters relating to the self-configuration capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
+    leaf rfcnfl-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig";
+    }
+    leaf pilot-pn-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig";
+    }
+    leaf maxfap-tx-power-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig";
+    }
+    leaf maxfap-beacon-tx-power-config {
+      type boolean;
+      description
+        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPBeaconTxPowerConfig";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
+  }
+
+  grouping fap-control-g {
+    description
+      "This object contains parameters relating to state management and provisioning aspects of the FAP.";
+    leaf-list self-config-events {
+      type enumeration {
+        enum "initial-rem" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents - InitialREM";
+        }
+      }
+      config false;
+      description
+        "{{list}} Each item is an event that causes the FAP to perform self configuration as defined by {{object|.FAPControl.UMTS.SelfConfig.}}, {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}, or {{object|.FAPControl.CDMA2000.HRPD.SelfConfig.}}. Vendors can extend the enumerated values with vendor-specific extensions, in which case the rules outlined in {{bibref|TR-106a2|Section3.3}} MUST be adhered to.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents";
+    }
+    leaf enclosure-tampering-detected {
+      type boolean;
+      config false;
+      description
+        "This parameter indicates whether or not physical tampering of the device enclosure occurred, such as illegal opening of the box. If {{true}} device tampering is detected. If {{false}} no sign of device tampering is detected. Tampering state MUST be persisted across reboots and the device MUST never reset it back from {{true}} to {{false}} even after a factory reset.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.EnclosureTamperingDetected";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.";
+  }
+
+  grouping fap-control-umts-g {
+    description
+      "This object contains parameters relating to the UMTS system specific information.";
+    leaf op-state {
+      type boolean;
+      description
+        "Current operational state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the UMTS FAP is currently enabled. If {{false}} the UMTS FAP is currently disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.OpState";
+    }
+    leaf admin-state {
+      type boolean;
+      config false;
+      description
+        "Lock or unlock the UMTS FAP. This controls the administrative state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition UMTS FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the UMTS FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the UMTS FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.AdminState";
+    }
+    leaf rf-tx-status {
+      type boolean;
+      description
+        "Current status of this UMTS FAP RF transmitter. {{true}} indicates that the UMTS FAP Tx transmitter is on. {{false}} indicates that the UMTS FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the UMTS FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the UMTS FAP is not allowed to provide service and MUST turn off the RF transmitter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.RFTxStatus";
+    }
+    leaf pm-config {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The value MUST be the path name of a row in the optional ''FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the UMTS FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.PMConfig";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.";
+  }
+
+  grouping fap-control-umts-self-config-g {
+    description
+      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
+    leaf uarfcn-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.RAN.CSG.UARFCNDLList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable";
+    }
+    leaf primary-scrambling-code-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable";
+    }
+    leaf maxfap-tx-power-expanded-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable";
+    }
+    leaf pcpich-power-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable";
+    }
+    leaf max-ul-tx-power-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable";
+    }
+    leaf lacracura-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable";
+    }
+    leaf neighbor-list-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values in the object {{object|.CellConfig.UMTS.RAN.NeighborList.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NeighborListSelfConfigEnable";
+    }
+    leaf cell-re-selection-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine Cell Selection/Reselection-related parameters in {{object|.CellConfig.UMTS.RAN.CellSelection.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.CellReSelectionSelfConfigEnable";
+    }
+    leaf intra-freq-meas-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine intra-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.IntraFreqMeasSelfConfigEnable";
+    }
+    leaf inter-freq-meas-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterFreqMeasSelfConfigEnable";
+    }
+    leaf inter-rat-meas-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-RAT measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterRATMeasSelfConfigEnable";
+    }
+    leaf ue-internal-meas-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine UE internal measurement-related parameters in {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UEInternalMeasConfigEnable";
+    }
+    leaf noise-rise-limit-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse}}. If {{true}} the FAP self-configures the value, based on the limits specified in {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. If {{false}} the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.";
+  }
+
+  grouping fap-control-umts-gateway-g {
+    description
+      "This object contains parameters relating to the Gateways that FAP is connected to.";
+    leaf sec-gw-server1 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "First SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer1";
+    }
+    leaf sec-gw-server2 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Second SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer2";
+    }
+    leaf sec-gw-server3 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Third SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer3";
+    }
+    leaf fap-gw-server1 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "First FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer1";
+    }
+    leaf fap-gw-server2 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Second FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer2";
+    }
+    leaf fap-gw-server3 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Third FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer3";
+    }
+    leaf fap-gw-port {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Port number of FAPGW used for initial Iuh SCTP contact. This value is specified as 29169 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-08. Use of IANA-defined value is recommended.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWPort";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.";
+  }
+
+  grouping fap-control-lte-g {
+    description
+      "This object contains parameters relating to the LTE system specific information.";
+    leaf op-state {
+      type boolean;
+      description
+        "Current operational state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the LTE FAP is currently enabled. If {{false}} the LTE FAP is currently disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.OpState";
+    }
+    leaf admin-state {
+      type boolean;
+      config false;
+      description
+        "Lock or unlock the LTE FAP. This controls the administrative state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition LTE FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the LTE FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the LTE FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.AdminState";
+    }
+    leaf rf-tx-status {
+      type boolean;
+      description
+        "Current status of this LTE FAP RF transmitter. {{true}} indicates that the LTE FAP Tx transmitter is on. {{false}} indicates that the LTE FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the LTE FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the LTE FAP is not allowed to provide service and MUST turn off the RF transmitter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.RFTxStatus";
+    }
+    leaf pm-config {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The value MUST be the path name of a row in optional the ''.FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the LTE FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.PMConfig";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.";
+  }
+
+  grouping fap-control-lte-gateway-g {
+    description
+      "This object contains parameters relating to the Gateways that the LTE FAP is connected to.";
+    leaf sec-gw-server1 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "First SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer1";
+    }
+    leaf sec-gw-server2 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Second SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer2";
+    }
+    leaf sec-gw-server3 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Third SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer3";
+    }
+    leaf-list s1-sig-link-server-list {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a S1 signaling connection end point (-GW or MME) the LTE FAP attempts to establish connection with. It is in the form of either hostname or IPaddress. LTE FAP's behavior in terms of the number of S1 connection to established with is determined by {{param|S1ConnectionMode}} parameter. If {{param|S1ConnectionMode}} has the value of {{enum|One|S1ConnectionMode}}, then LTE FAP attempts to establish S1 connection with only one address following the ordering of the list. If {{param|S1ConnectionMode}} has the value of {{enum|All|S1ConnectionMode}}, then LTE FAP attempts to establish connection with all addresses in the list.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkServerList";
+    }
+    leaf s1-connection-mode {
+      type enumeration {
+        enum "one" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - One";
+        }
+        enum "all" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - All";
+        }
+      }
+      config false;
+      description
+        "Indicates how many of the configured far-end S1 link address(es),as defined in {{param|S1SigLinkServerList}}, LTE FAP SHOULD attempt to establish connection with simultaneously. If {{param}} parameter is not explicitly configured, then LTE FAP shall assume the value to be {{enum|One|S1ConnectionMode}} as default.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode";
+    }
+    leaf s1-sig-link-port {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Port number of S1AP signaling connection end point (-GW or MME) used for initial S1 SCTP contact. This value is specified as 36412 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-01. Use of IANA-defined value is recommended.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkPort";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.";
+  }
+
+  grouping fap-control-cdma2000-g {
+    description
+      "This object contains parameters relating to the configuration for the control portions of a CDMA2000 FAP.";
+    leaf home-domain {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "A string containing one of operator's home domains in URI format. FAP is preconfigured with a default home domain, which can be overwritten later by ACS. See {{bibref|3GPP2-X.S0059}}. If the''.ManagementServer.URL'' is null, then the FAP shall use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} is null, then the FAP shall use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute. If the FAP is unable to connect to the management server indicated by the value of the ''.ManagementServer.URL'' attribute and this attribute is not null, the FAP may use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If the FAP is unable to connect to any security gateway indicated by the value of the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}}, {{param|.FAPControl.CDMA2000.Gateway.SecGWServer2}}, and {{param|.FAPControl.CDMA2000.Gateway.SecGWServer3}} attributes and this attribute is not null, the FAP may use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HomeDomain";
+    }
+    leaf remote-ip-access-enable {
+      type boolean;
+      config false;
+      description
+        "Enable or disable remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}} remote IP access is enabled. If {{false}} remove IP access is disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.RemoteIPAccessEnable";
+    }
+    leaf pm-config {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The value MUST be the path name of a row in the ''.FAP.PerfMgmt.Config.'' table. This is the performance management related configuration for the CDMA2000 FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.PMConfig";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.";
+  }
+
+  grouping fap-control-cdma2000-time-g {
+    description
+      "This object contains parameters related to time syncronization with CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}).";
+    leaf local-time-zone {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The local time zone for CDMA2000 operational purposes. E.g., \"+HH:MM JST\" for Japan. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LocalTimeZone";
+    }
+    leaf current-local-time {
+      type string {
+        length "0..64";
+      }
+      description
+        "The current CDMA System Time (see {{bibref|3GPP2-C.S0005}}), expressed as date and time in the CPE's local time zone. The format of this field is \"YYYY-MM-DDThh:mm:ss.sTZD\" (e.g., 1997-07-16T19:20:30.45+01:00), where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.CurrentLocalTime";
+    }
+    leaf leap-seconds {
+      type int64;
+      units "seconds";
+      config false;
+      description
+        "Number of leap seconds (in {{units}} to be applied between CurrentLocalTime and CDMA System Time. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LeapSeconds";
+    }
+    leaf daylight-savings-used {
+      type boolean;
+      config false;
+      description
+        "Whether or not daylight savings time is in use in the FAP's local time zone with respect to CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}). {true}} if daylight savings time is being used; otherwise {{false}}. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.DaylightSavingsUsed";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.";
+  }
+
+  grouping fap-control-cdma2000-one-x-g {
+    description
+      "This object contains all global attributes of the 1xFemto application.";
+    leaf admin-state {
+      type enumeration {
+        enum "lock" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Lock";
+        }
+        enum "unlock" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Unlock";
+        }
+      }
+      config false;
+      description
+        "Administrative state for 1x";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState";
+    }
+    leaf op-state {
+      type enumeration {
+        enum "enabled" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Enabled";
+        }
+        enum "disabled" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Disabled";
+        }
+      }
+      description
+        "Operational state of the 1x";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState";
+    }
+    leaf rf-tx-status {
+      type boolean;
+      description
+        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.RFTxStatus";
+    }
+    leaf daylight {
+      type int64;
+      config false;
+      description
+        "If Daylight Savings Time is being used with respect to CDMA2000 1x overhead parameters (see {{bibref|3GPP2-C.S0005}}), then {{param}} should be set to {{true}}. Otherwise, {{param}} should be set to {{false}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Daylight";
+    }
+    leaf max-p-rev {
+      type int64;
+      config false;
+      description
+        "Protocol revision supported by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MaxPRev";
+    }
+    leaf reregister {
+      type uint64;
+      config false;
+      description
+        "{{param}} triggers a re-registration of all mobiles. The FAP triggers re-registration of all registered mobiles everytime this number changes";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Reregister";
+    }
+    leaf emergency-session-period {
+      type uint16 {
+        range "15..1800";
+      }
+      units "seconds";
+      config false;
+      description
+        "The period (in {{units}}) the session of an unauthorized user is kept alive after an emergency call.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.EmergencySessionPeriod";
+    }
+    leaf location-area-code {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "This is the location area code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.LocationAreaCode";
+    }
+    leaf msc-id {
+      type uint64;
+      config false;
+      description
+        "This is the FAP's MSCID. This ID is used in PANI header.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MSCId";
+    }
+    leaf active-handin-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the FAP performs active hand-in from another base station. If {{true}} active hand-in is enabled; if {{false}} active hand-in is disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.";
+  }
+
+  grouping fap-control-cdma2000-one-x-active-handin-measurement-g {
+    description
+      "CDMA2000 1x active handin operational parameters.";
+    leaf active-handin-measurement-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the FAP performs active hand-in measurement if a request is received. If {{true}} active hand-in measurement is enabled; if {{false}} active hand-in measurement is disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandinMeasurementEnable";
+    }
+    leaf active-hand-in-measurement-duration {
+      type uint16 {
+        range "0..65535";
+      }
+      units "1.25 ms slots";
+      config false;
+      description
+        "The minimum duration in {{units}} for which FAP should take a mobile's RL pilot strength measurements for active hand-in purpose when directed by the network. Instead of continuous measurement for this entire duration, a FAP can make multiple measurements by sampling over shorter durations. In such a case, this value specifies the minimum time separation required between the first and last measurement samples.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandInMeasurementDuration";
+    }
+    leaf measurement-report-threshold {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "The threshold (in {{units}}) for the FAP to report an active hand-in measurement. If the metric to be reported is below the threshold, the FAP may not send any report.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.MeasurementReportThreshold";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
+  }
+
+  grouping fap-control-cdma2000-one-x-self-config-g {
+    description
+      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
+    leaf rfcnfl-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable";
+    }
+    leaf pilot-pn-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable";
+    }
+    leaf maxfap-tx-power-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
+    }
+    leaf maxfap-beacon-tx-power-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
+  }
+
+  grouping fap-control-cdma2000-gateway-g {
+    description
+      "CDMA2000 FAP Security Gateway operational parameters.";
+    leaf sec-gw-server1 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "First SecGW the FAP attempts to contact. Either FQDN or IP address";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer1";
+    }
+    leaf sec-gw-server2 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Second SecGW the FAP attempts to contact. Either FQDN or IP address";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer2";
+    }
+    leaf sec-gw-server3 {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Third SecGW that the FAP attempts to contact. Can contain either FQDN or IP address";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer3";
+    }
+    leaf sec-gw-switchover-count {
+      type uint64;
+      description
+        "Counter indicating how many times FAP has switched between SecGW";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWSwitchoverCount";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.";
+  }
+
+  grouping fap-control-cdma2000-hrpd-g {
+    description
+      "Operational parameters for the HRPD portion of a CDMA2000 FAP.";
+    leaf op-state {
+      type boolean;
+      description
+        "Current operational state of the FAP as defined in ITU-X.731 [32]. If {{true}} the FAP is currently enabled. If {{false}} the FAP is currently disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.OpState";
+    }
+    leaf admin-state {
+      type boolean;
+      config false;
+      description
+        "Lock or unlock the FAP. This controls the administrative state of the FAP as defined in ITU-X.731 [32]. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: location verification (including meeting the governing regulatory requirements) verifying the FAP configuration if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.AdminState";
+    }
+    leaf rf-tx-status {
+      type boolean;
+      description
+        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.RFTxStatus";
+    }
+    leaf a13-session-transfer-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the FAP performs A13 session transfer. If {{true}} A13 session transfer is enabled; if {{false}} A13 session transfer is disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13SessionTransferEnable";
+    }
+    leaf local-ip-access-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the FAP can assign local IP address to capable ATs. If {{true}} local IP address is assigned.; if {{false}} local IP address is not assigned.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.LocalIPAccessEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.";
+  }
+
+  grouping fap-control-cdma2000-hrpd-self-config-g {
+    description
+      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
+    leaf rfcnfl-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable";
+    }
+    leaf pilot-pn-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable";
+    }
+    leaf maxfap-tx-power-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} . If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
+    }
+    leaf max-hrpd-beacon-tx-power-self-config-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} The ACS must provide the specific value to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxHRPDBeaconTxPowerSelfConfigEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
+  }
+
+  grouping fap-control-cdma2000-hrpd-a13-g {
+    description
+      "This object contains attributes related to A13 Session Transfer";
+    leaf color-code-to-uati104-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104NumberOfEntries";
+    }
+    leaf hrpd-subnet-to-ip-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIPNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
+  }
+
+  grouping fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g {
+    description
+      "HRPD ColorCode to UATI Mapping Table number of entries.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Alias";
+    }
+    leaf color-code {
+      type uint16 {
+        range "0..256";
+      }
+      description
+        "Color Code mapped to UATI104 in the following field";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.ColorCode";
+    }
+    leaf uati104 {
+      type binary {
+        length "0..13";
+      }
+      description
+        "The UATI104 of the AT that accesses with the ColorCode field";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.UATI104";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
+  }
+
+  grouping fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g {
+    description
+      "This object contains attributes related to A13 Session Transfer";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Alias";
+    }
+    leaf hrpd-subnet-length {
+      type uint8 {
+        range "1..104";
+      }
+      units "bits";
+      config false;
+      description
+        "The number of MSBs (in {{units}}) in the following field that is part of HRPDSubnet";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnetLength";
+    }
+    leaf hrpd-subnet {
+      type binary {
+        length "0..13";
+      }
+      config false;
+      description
+        "The {{param|HRPDSubnetLength}} MSBs of this field contain the HRPD subnet that maps to the IP address in the following field";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnet";
+    }
+    leaf a13-ip-address {
+      type inet:ip-address;
+      description
+        "This field contains the IP address of A13 endpoint that corresponds to the HRPD subnet";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.A13IPAddress";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
+  }
+
+  grouping access-mgmt-g {
+    description
+      "This object contains parameters relating to Access Management for the different radio technologies.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.";
+  }
+
+  grouping access-mgmt-umts-g {
+    description
+      "This object contains parameters relating to Access Management for UMTS FAP (ACL, CSG, LIPA). Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in {{object|.CellConfig.UMTS.RAN.CellRestriction.}} (UMTS FAP).";
+    leaf access-mode {
+      type enumeration {
+        enum "open access" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Open Access";
+        }
+        enum "closed access" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Closed Access";
+        }
+        enum "hybrid access" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Hybrid Access";
+        }
+      }
+      default "open access";
+      config false;
+      description
+        "Indicates the type of access mode the FAP operates in. {{enum}} When the value is not {{enum|Open Access}} non-CSG-capable UE are handled according to {{param|NonCSGUEAccessDecision}}. Note: This parameter controls the setting of the CSGindicator bit, specified in MIB in {{bibref|3GPP-TS.25.331}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode";
+    }
+    leaf non-csgue-access-decision {
+      type enumeration {
+        enum "local" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Local";
+        }
+        enum "query fap-gw" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Query FAPGW";
+        }
+        enum "by core" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - By Core";
+        }
+      }
+      default "local";
+      config false;
+      description
+        "Indicates how the access decision is made for non-CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision";
+    }
+    leaf csg-membership-determined-locally {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Indicates how the access decision is made for CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}. If {{true}} access decision is determined the same way as for {{param|NonCSGUEAccessDecision}}. (E.g. if core network doesn't (yet) support full CSG functionality.) If {{false}} FAP always allows access for CSG-capable UE. CSG enforcement is performed by MSC/SGSN (with support from HSS), or by FGW. {{bibref|3GPP-TS.22.011}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGMembershipDeterminedLocally";
+    }
+    leaf max-u-es-served {
+      type int64;
+      default "-1";
+      config false;
+      description
+        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxUEsServed";
+    }
+    leaf max-csg-members {
+      type int64;
+      default "-1";
+      config false;
+      description
+        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxCSGMembers";
+    }
+    leaf max-non-csg-members {
+      type int64;
+      default "-1";
+      config false;
+      description
+        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxNonCSGMembers";
+    }
+    leaf max-resource-non-csg-members {
+      type uint8 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. In UMTS FAP, this applies to RB resource.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxResourceNonCSGMembers";
+    }
+    leaf hnb-name {
+      type string {
+        length "0..48";
+      }
+      config false;
+      description
+        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB20 in {{bibref|3GPP-TS.25.331|Section 10.2.48.8.23}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.HNBName";
+    }
+    leaf csgid {
+      type uint32 {
+        range "0..134217727";
+      }
+      config false;
+      description
+        "Defines the Closed Subscriber Group of the Access Control List. The UMTS FAP broadcasts this CSG ID in SIB3 depending on the AccessMode. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGID";
+    }
+    leaf-list access-control-list {
+      type string {
+        length "0..15";
+      }
+      config false;
+      max-elements "1024";
+      description
+        "{{list}} Each entry is an IMSI.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessControlList";
+    }
+    leaf max-member-detail-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxMemberDetailEntries";
+    }
+    leaf member-detail-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetailNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.";
+  }
+
+  grouping access-mgmt-umts-member-detail-g {
+    description
+      "Details for CSG and Non-CSG members.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the MemberDetail entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Alias";
+    }
+    leaf imsi {
+      type string {
+        length "0..15";
+      }
+      description
+        "International Mobile Subscriber Identity of the UE.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.IMSI";
+    }
+    leaf msisdn {
+      type string {
+        length "0..15";
+      }
+      config false;
+      description
+        "Mobile Station International Subscriber Identity Number. Set to {{empty}} if unknown.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MSISDN";
+    }
+    leaf membership-expires {
+      type yang:date-and-time;
+      config false;
+      description
+        "Time when the ACL membership expires. An Unknown Time value, as defined in {{bibref|TR-106a2|Section 3.2}}, indicates that the membership doesn't expire. Upon expiry the FAP MUST remove the IMSI from the {{param|.AccessMgmt.UMTS.AccessControlList}}, but the entry in {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} remains. {{bibref|3GPP-TS.22.011}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MembershipExpires";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
+  }
+
+  grouping access-mgmt-umts-local-ip-access-g {
+    description
+      "Local IP access for UMTS FAP.";
+    leaf enable {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Enables/disables the Local IP Access (LIPA) functionality.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.Enable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
+  }
+
+  grouping access-mgmt-lte-g {
+    description
+      "This object contains parameters relating to Access Management, as defined in {{bibref|3GPP-TS.32.592}}/ Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in SIB1 in {{bibref|3GPP-TS.36.331}}.";
+    leaf access-mode {
+      type enumeration {
+        enum "open access" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Open Access";
+        }
+        enum "closed access" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Closed Access";
+        }
+        enum "hybrid access" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Hybrid Access";
+        }
+      }
+      default "open access";
+      config false;
+      description
+        "Indicates the type of access mode the FAP operates in. {{enum}} Note: This parameter controls the setting of the CSGindicator bit, specified in SIB1 in {{bibref|3GPP-TS.36.331}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode";
+    }
+    leaf max-u-es-served {
+      type int64;
+      default "-1";
+      config false;
+      description
+        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxUEsServed";
+    }
+    leaf max-csg-members {
+      type int64;
+      default "-1";
+      config false;
+      description
+        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxCSGMembers";
+    }
+    leaf max-non-csg-members {
+      type int64;
+      default "-1";
+      config false;
+      description
+        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxNonCSGMembers";
+    }
+    leaf max-resource-non-csg-members {
+      type uint8 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. This applies to PDSCH physical resource blocks.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxResourceNonCSGMembers";
+    }
+    leaf csgid {
+      type uint32 {
+        range "0..134217727";
+      }
+      config false;
+      description
+        "Defines the Closed Subscriber Group of the Access Control List. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.CSGID";
+    }
+    leaf hnb-name {
+      type string {
+        length "0..48";
+      }
+      config false;
+      description
+        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB9 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.HNBName";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.";
+  }
+
+  grouping access-mgmt-lte-local-ip-access-g {
+    description
+      "Local IP access for LTE FAP.";
+    leaf enable {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Enables/disables the Local IP Access (LIPA) functionality.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.Enable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
+  }
+
+  grouping access-mgmt-cdma2000-g {
+    description
+      "This object contains configurable and observable attributes related to CDMA2000 Access and Admission Control of the FAP.";
+    leaf access-mode {
+      type uint8 {
+        range "0 | 1 | 3";
+      }
+      config false;
+      description
+        "Defines the access control mode of FAP. Allowed modes are Open, Closed, and Signaling Association (refer to {{bibref|3GPP2-A.S0024}}). AccessMode 2 (Hybrid) is not applicable to CDMA2000 FAPs. 0- Open,1-Closed, 2-Reserved, 3-Signaling Association.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessMode";
+    }
+    leaf max-total-active-calls-allowed {
+      type uint16 {
+        range "1..1024";
+      }
+      config false;
+      description
+        "Total number of active calls allowed.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxTotalActiveCallsAllowed";
+    }
+    leaf access-control-list {
+      type string {
+        length "0..1024";
+      }
+      config false;
+      description
+        "{{list}} (maximum item length 15). Each entry is an IMSI.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessControlList";
+    }
+    leaf max-member-detail-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.AccessMgmt.CDMA2000.MemberDetail.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxMemberDetailEntries";
+    }
+    leaf member-detail-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetailNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.";
+  }
+
+  grouping access-mgmt-cdma2000-member-detail-g {
+    description
+      "At most one enabled entry in this table can exist with a given value for IMSI and HRPDIdentifierValue. The IMSI field may be empty.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Alias";
+    }
+    leaf imsi {
+      type string {
+        length "0..15";
+      }
+      description
+        "International Mobile Subscriber Identity of the UE.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.IMSI";
+    }
+    leaf hrpd-identifier-type {
+      type int64;
+      config false;
+      description
+        "Type of identifier used for the HRPD AT. 0-invalid 1-ESN 2-MEID 3-A12NAI. If IMSI in this record is valid, then this attribute is set to 0.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierType";
+    }
+    leaf hrpd-identifier-value {
+      type string {
+        length "0..128";
+      }
+      config false;
+      description
+        "The value of this attribute depends on {{param|HRPDIdentifierType}}. ESN and MEID shall be defined as Hex.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierValue";
+    }
+    leaf membership-expires {
+      type yang:date-and-time;
+      config false;
+      description
+        "The time that the current ACL membership expires.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.MembershipExpires";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
+  }
+
+  grouping access-mgmt-cdma2000-local-ip-access-g {
+    description
+      "Local IP access support as defined in 3GPP2";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
+  }
+
+  grouping access-mgmt-cdma2000-local-ip-access-hrpd-g {
+    description
+      "Local IP access support as defined in 3GPP2";
+    leaf filter-type {
+      type uint8 {
+        range "0..3";
+      }
+      config false;
+      description
+        "Value of '0' indicates that the FAP shall allow only IP packets with destination address matching the local IP subnet on Local IP access interface. Value of '1' indicates that the FAP shall allow any IP packets with destination address matching either the local IP subnet or the subnets listed in Local IP egress filter parameter on Local IP access interface. Value of '2' indicates that the FAP shall allow any IP packets with destination addresses that do not match the Local IP egress filter parameter on Local IP access interface.Value of '3' indicates that the FAP shall allow any IP packets on the local IP address interface.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType";
+    }
+    leaf filter-in-use {
+      type string {
+        length "0..256";
+      }
+      description
+        "This parameter is set to the IPCP Vendor Specific Option which the FAP uses to send Local IP access packet filter on AN-PPP interface.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterInUse";
+    }
+    leaf egress-filter-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilterNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
+  }
+
+  grouping access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g {
+    description
+      "HRPD LIPA Egress Filter Table entries.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Alias";
+    }
+    leaf subnet {
+      type inet:ipv4-address;
+      description
+        "The IP subnet of the egress filter to be installed to the AT. The meaning of this field depends on the {{param|.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType}} field.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Subnet";
+    }
+    leaf subnet-mask {
+      type uint8 {
+        range "0..32";
+      }
+      description
+        "The length of the IP subnetmask associated with the IP subnet in the previous field.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.SubnetMask";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
+  }
+
+  grouping access-mgmt-legacy-g {
+    description
+      "This object contains configurable and observable attributes related to Access and Admission Control of the FAP, which are not not covered by 3GPP and 3GPP2 specifications.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.";
+  }
+
+  grouping access-mgmt-legacy-local-ip-access-g {
+    description
+      "Old Local IP access object, included on special request.";
+    leaf enable {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Enables/disables the Local IP Access (LIPA) functionality.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Enable";
+    }
+    leaf max-rules-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.MaxRulesEntries";
+    }
+    leaf rule-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.RuleNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
+  }
+
+  grouping access-mgmt-legacy-local-ip-access-rule-g {
+    description
+      "Policy for selecting traffic for local IP access. Originated traffic will be NAT'ed. The rule is bi-directional, i.e. return traffic is allowed. Rules do NOT affect traffic to/from the FAP itself (such as TR-069 or control). The rules are applied to the mobile station data traffic (PS-domain) via deep packet inspection or similar method.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the forwarding entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Alias";
+    }
+    leaf dest-ip-address {
+      type inet:ip-address;
+      description
+        "Destination IP Address. {{empty}} indicates no destination address is specified. An entry for which {{param}} and {{param|DestSubnetMask}} are both {{empty}} is a default route.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestIPAddress";
+    }
+    leaf dest-subnet-mask {
+      type inet:ip-address;
+      description
+        "Destination subnet mask (IPv4) or prefix (IPv6). {{empty}} indicates no destination subnet mask or prefix is specified. If a destination subnet mask or prefix is specified, {{param}} is ANDed with the destination address before comparing with {{param|DestIPAddress}}. Otherwise, the full destination address is used as-is. An entry for which {{param|DestIPAddress}} and {{param}} are both {{empty}} is a default route.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestSubnetMask";
+    }
+    leaf protocol {
+      type int64;
+      description
+        "IP Protocol Identifier. -1 matches any protocol.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Protocol";
+    }
+    leaf action {
+      type enumeration {
+        enum "tunnel" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - Tunnel";
+        }
+        enum "napt" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - NAPT";
+        }
+      }
+      config false;
+      description
+        "Action to be taken for traffic matching this rule.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action";
+    }
+    leaf interface {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "Specifies the egress interface when {{param|Action}} is set to {{enum|NAPT|Action}}. {{reference}} layer-3 connection object. Example: InternetGatewayDevice.LANDevice.{i}.LANEthernetInterfaceConfig.{i}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Interface";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
+  }
+
+  grouping cell-config-g {
+    description
+      "This object contains parameters relating to configuring the FAP.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.";
+  }
+
+  grouping umts-g {
+    description
+      "This object contains parameters relating to configuring UMTS system specific information.";
+    leaf tunnel-instance {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "This is the reference to the IPsec tunnel instance used by the UMTS FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.TunnelInstance";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.";
+  }
+
+  grouping umts-cn-g {
+    description
+      "This object contains parameters relating to configuring UMTS CN.";
+    leaf plmn-type {
+      type enumeration {
+        enum "gsm-map" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - GSM-MAP";
+        }
+        enum "ansi-41" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - ANSI-41";
+        }
+      }
+      config false;
+      description
+        "Type of Public Land Mobile Network (PLMN).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      config false;
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNID";
+    }
+    leaf-list equiv-plmnid {
+      type string {
+        length "0..6";
+      }
+      config false;
+      max-elements "64";
+      description
+        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.EquivPLMNID";
+    }
+    leaf sac {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Service Area Code (SAC) {{bibref|3GPP-TS.23.003}}. The concatenation of PLMN ID (MCC+MNC), LAC, and SAC uniquely identifies the Service Area ID (SAI).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.SAC";
+    }
+    leaf broadcast-sac {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Service Area Code (SAC) for broadcast. The format of this parameter is the same with {{param|SAC}}, and it uniquely identifies the Service Area ID (SAI) for Earthquake and Tsunami Warning Services (ETWS) {{bibref|3GPP-TS.25.469|Section 9.1.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.BroadcastSAC";
+    }
+    leaf-list lacrac {
+      type string;
+      config false;
+      max-elements "256";
+      description
+        "{{list}} Each item is a LAC/RAC combination expressed in the following format: :<LAC or LACrange>':'<RAC or RACrange> Where LAC and RAC are single values, while LACrange and RACrange are inclusive and can be expressed in the following format: :<Start-value>\"..\"<End-value> Location Area Code (LAC) consists of up to 5 numerical characters. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}. Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}. The FAP is to select one LAC and RAC from the combination(s) expressed in this parameter for use in {{param|LACInUse}} and {{param|RACInUse}} respectively. If a LAC occurs more than once in the list, this shall not increase the chance that it is selected over other LAC values in the list. The following are examples of the valid LACRAC combination formats: :\"64000:210\" ::(one list item with single value for LAC and RAC) :\"64000..64100:210, 64101:211\" ::(two list items, first item has a LAC range) :\"64000:210..214, 64001:215..219\" ::(two list items, both items have a RAC range for a specific LAC value) :\"64000..64100:210..214\" ::(one list item both have a LAC range and a RAC range)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACRAC";
+    }
+    leaf lac-in-use {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "The LAC being used by the FAP. Self-configuration for LAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first LAC value in {{param|LACRAC}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACInUse";
+    }
+    leaf rac-in-use {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "The RAC being used by the FAP. Self-configuration for RAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first RAC value in {{param|LACRAC}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.RACInUse";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.";
+  }
+
+  grouping umts-cn-cs-domain-g {
+    description
+      "This object contains parameters relating to configuring the CS domain of the UMTS CN.";
+    leaf t3212 {
+      type uint32 {
+        range "0..91800";
+      }
+      units "seconds";
+      config false;
+      description
+        "T3212 timeout value specified in {{units}} {{bibref|3GPP-TS.24.008|section 10.5.1.12.2}}. The values are implemented by steps of 360 {{units}}, which aligns with values in decihours in {{bibref|3GPP-TS.24.008}}. The value of 0 is used for infinite timeout value i.e. periodic updating shall not be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.T3212";
+    }
+    leaf imsi-attach-detach-enable {
+      type boolean;
+      config false;
+      description
+        "Indicates the UE behavior regarding IMSI attach/detach procedure to the CN {{bibref|3GPP-TS.24.008}}. If {{true}} UE SHALL apply IMSI attach and detach procedure If {{false}} UE SHALL NOT apply IMSI attach and detach procedure";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.IMSIAttachDetachEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
+  }
+
+  grouping umts-cn-ps-domain-g {
+    description
+      "This object contains parameters relating to configuring the PS domain of the UMTS CN.";
+    leaf network-mode-operation-combined {
+      type boolean;
+      config false;
+      description
+        "Network Mode of Operation of the CN. {{bibref|3GPP-TS.23.060}} {{bibref|3GPP-TS.24.008}} If {{true}} (Network Mode of Operation II) Combined procedures between CS and PS domain are not supported (i.e. Gs interface is not present). If {{false}} (Network Mode of Operation I) Combined procedures between CS and PS domain are supported (i.e. Gs interface is present).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.NetworkModeOperationCombined";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
+  }
+
+  grouping umts-ran-g {
+    description
+      "This object contains parameters relating to the RAN-level configuration.";
+    leaf-list ura-list {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      min-elements 1;
+      max-elements "50";
+      description
+        "{{list}} Each item is a URA (UTRAN Registration Area) to which the FAP belongs. The order of the URA values has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAList";
+    }
+    leaf ura-in-use {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "The URA being used by the FAP. Self-configuration for URA is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for URA is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|URAList}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first URA value in {{param|URAList}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAInUse";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "RNC-ID allocated to the FAP. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RNCID";
+    }
+    leaf cell-id {
+      type uint32 {
+        range "0..268435455";
+      }
+      config false;
+      description
+        "Cell Identity. {{bibref|3GPP-TS.25.401|Section 6.1.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellID";
+    }
+    leaf t-rat-c {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Guard period in {{units}} before sending a \"RANAP:RESET ACKNOWLEDGE\" message towards the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRatC";
+    }
+    leaf t-raf-c {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Maximum amount of time in {{units}} that the FAP SHOULD wait for receiving a \"RANAP:RESET ACKNOWLEDGE\" message from the Femto GW after sending a Reset to the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRafC";
+    }
+    leaf n-raf-c {
+      type uint64 {
+        range "1..max";
+      }
+      config false;
+      description
+        "Maximum number for RESET procedure that can be repeated in FAP. {{bibref|3GPP-TS.25.413|Section 8.26.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NRafC";
+    }
+    leaf tig-or {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Amount of time in {{units}} used to determine when the additional level of traffic reduction in CN overload SHOULD take place. While this timer is running all OVERLOAD messages or signalling pointing to congested information received by the FAP are ignored. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TigOR";
+    }
+    leaf tin-tr {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Amount of time in {{units}} used to determine when the CN overload can be considered cleared. While this timer is running, the FAP is not allowed to increase traffic. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TinTR";
+    }
+    leaf t-data-fwd {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Maximum amount of time in {{units}} for Data Forwarding at FAP. Timer is started when a \"RANAP:SRNS Data Forward Command\" message (or a \"RANAP:Relocation Command\" message) is received. At timer expiry the \"SRNS Data Forwarding\" procedure is completed. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TDataFwd";
+    }
+    leaf t-reloc-prep {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Maximum amount of time in {{units}} for the Relocation Preparation procedure. Timer is started when a \"RANAP:Relocation Required\" message is sent. Timer is stopped when a \"RANAP:Relocation Command\" or a \"RANAP:Relocation Preparation Failure\" message is received. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocPrep";
+    }
+    leaf t-reloc-overall {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Maximum amount of time in {{units}} for protection of the overall Relocation procedure. Timer is started when a \"RANAP:Relocation Command\" message is received. Timer is stopped when a \"RANAP:Iu Release Command\" is received or the relocation procedure is cancelled. {{bibref|3GPP-TS.25.413|Section 9.5}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocOverall";
+    }
+    leaf hnbid-realm {
+      type string {
+        length "0..182";
+      }
+      config false;
+      description
+        "The \"realm\" portion of the HNB-ID where HNB-ID is defined in {{bibref|3GPP-TS.25.469}} and is shown as follows: 0<IMSI>@<realm> Or 1<OUI>-<SerialNumber>@<realm> The other identifiers before \"@\" are device dependent values. Both <OUI> and <SerialNumber> are defined in {{bibref|TR-069a2|Table 36}}. <IMSI> is obtained from the USIM if it is equipped in the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HNBIDRealm";
+    }
+    leaf hs-flag {
+      type boolean;
+      config false;
+      description
+        "Enables/disables the HSDPA function in the FAP. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is disabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}})";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSFlag";
+    }
+    leaf hs-enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables HSDPA in the cell. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is not enabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{param|HSFlag}} is {{false}} then this value MUST be {{false}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSEnable";
+    }
+    leaf num-of-hspdsc-hs {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "The number of codes at the defined spreading factor (SF=16), within the complete code tree. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSPDSCHs";
+    }
+    leaf num-of-hsscc-hs {
+      type uint64;
+      config false;
+      description
+        "The number of HS-SCCHs for one cell. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSSCCHs";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.";
+  }
+
+  grouping umts-ran-csg-g {
+    description
+      "This object contains parameters relating to the Closed Subscriber Group (CSG).";
+    leaf csg-indicator {
+      type boolean;
+      description
+        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting access to the CSG cell is closed. If {{false}} the CSG-indicator IE is absent, reflecting access to the CSG cell is not closed. {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGIndicator";
+    }
+    leaf-list uarfcndl-list {
+      type uint16 {
+        range "0..16383";
+      }
+      config false;
+      max-elements "128";
+      description
+        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN) in the UL direction is derived based on the fixed offset applicable for the frequency band.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.UARFCNDLList";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
+  }
+
+  grouping umts-ran-csg-csgpsc-split-info-g {
+    description
+      "This object contains parameters relating to the Primary Scrambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
+    leaf start-psc-range1-coefficient {
+      type uint8 {
+        range "0..63";
+      }
+      config false;
+      description
+        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.StartPSCRange1Coefficient";
+    }
+    leaf number-of-ps-cs {
+      type enumeration {
+        enum "5" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 5";
+        }
+        enum "10" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 10";
+        }
+        enum "15" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 15";
+        }
+        enum "20" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 20";
+        }
+        enum "30" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 30";
+        }
+        enum "40" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 40";
+        }
+        enum "50" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 50";
+        }
+        enum "64" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 64";
+        }
+        enum "80" {
+          value 9;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 80";
+        }
+        enum "120" {
+          value 10;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 120";
+        }
+        enum "160" {
+          value 11;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 160";
+        }
+        enum "256" {
+          value 12;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 256";
+        }
+        enum "alltherest" {
+          value 13;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
+        }
+        enum "spare3" {
+          value 14;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare3";
+        }
+        enum "spare2" {
+          value 15;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare2";
+        }
+        enum "spare1" {
+          value 16;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare1";
+        }
+      }
+      config false;
+      description
+        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs";
+    }
+    leaf psc-range2-offset {
+      type uint8 {
+        range "0..63";
+      }
+      config false;
+      description
+        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.PSCRange2Offset";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
+  }
+
+  grouping umts-ran-cell-selection-g {
+    description
+      "This object contains parameters related to cell selection and reselection.";
+    leaf quality-measure-cpich {
+      type enumeration {
+        enum "ec/no" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - Ec/No";
+        }
+        enum "rscp" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - RSCP";
+        }
+      }
+      config false;
+      description
+        "Which mechanism to use when doing CPICH quality measurements. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH";
+    }
+    leaf qqual-min {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Minimum required quality measure, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMin";
+    }
+    leaf qqual-min-offset {
+      type uint8 {
+        range "1..16";
+      }
+      units "dB";
+      default "1";
+      config false;
+      description
+        "Offset for {{param|QqualMin}} specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMinOffset";
+    }
+    leaf q-rx-lev-min {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only odd values are valid, use of an even value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMin";
+    }
+    leaf delta-q-rx-lev-min {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Delta for the minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} The actual value of {{param|QRxLevMin}} = {{param|QRxLevMin}} + {{param}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.DeltaQRxLevMin";
+    }
+    leaf q-rx-lev-min-offset {
+      type uint8 {
+        range "2 | 4 | 6 | 8 | 10 | 12 | 14 | 16";
+      }
+      units "dB";
+      default "2";
+      config false;
+      description
+        "Offset for {{param|QRxLevMin}}, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMinOffset";
+    }
+    leaf q-hyst1s {
+      type uint8 {
+        range "0..40";
+      }
+      config false;
+      description
+        "GSM and FDD Cell reselection hysteresis 1. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst1s";
+    }
+    leaf q-hyst2s {
+      type uint8 {
+        range "0..40";
+      }
+      config false;
+      description
+        "FDD Cell reselection hysteresis 2. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored. By default when {{param|QHyst1s}} is set and {{param}} is not, then the value for {{param}} SHOULD match the value of {{param|QHyst1s}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst2s";
+    }
+    leaf t-reselections {
+      type uint8 {
+        range "0..31";
+      }
+      units "seconds";
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. A UE triggers the reselection of a new cell if the cell reselection criteria are fulfilled during the time interval in {{units}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TReselections";
+    }
+    leaf s-intrasearch {
+      type int64;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intra-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntrasearch";
+    }
+    leaf s-intersearch {
+      type int64;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for inter-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntersearch";
+    }
+    leaf s-search-hcs {
+      type int64;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intrafrequency and interfrequency measurement rules in HCS. Below this limit in the serving cell, the UE initiates measurements of all intrafrequency and interfrequency neighbouring cells of the serving cell. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchHCS";
+    }
+    leaf s-search-rat {
+      type int64;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchRAT";
+    }
+    leaf shcsrat {
+      type int64;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules in HCS. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SHCSRAT";
+    }
+    leaf s-limit-search-rat {
+      type int64;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for skipping inter-RAT measurement rules in HCS. Above this RAT (GSM) specific threshold in the serving UTRA cell, the UE does not need to perform any inter-RAT measurements. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SLimitSearchRAT";
+    }
+    leaf non-hcstcr-max {
+      type enumeration {
+        enum "not used" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - not used";
+        }
+        enum "30" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 30";
+        }
+        enum "60" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 60";
+        }
+        enum "120" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 120";
+        }
+        enum "180" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 180";
+        }
+        enum "240" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 240";
+        }
+      }
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NonHCSNCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax";
+    }
+    leaf non-hcsncr {
+      type uint8 {
+        range "1..16";
+      }
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|NonHCSTCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSNCR";
+    }
+    leaf non-hcstcr-max-hyst {
+      type enumeration {
+        enum "not used" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - not used";
+        }
+        enum "10" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 10";
+        }
+        enum "20" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 20";
+        }
+        enum "30" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 30";
+        }
+        enum "40" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 40";
+        }
+        enum "50" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 50";
+        }
+        enum "60" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 60";
+        }
+        enum "70" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 70";
+        }
+      }
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param|TCRMaxHyst}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst";
+    }
+    leaf qhcs {
+      type uint8 {
+        range "0..99";
+      }
+      default "0";
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the quality threshold levels for applying prioritised hierarchical cell reselection. {{bibref|3GPP-TS.25.331|Section 10.3.7.12 and Section 10.3.7.54a}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHCS";
+    }
+    leaf use-of-hcs {
+      type boolean;
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Indicate whether HCS is used in this cell or not. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UseOfHCS";
+    }
+    leaf hcs-prio {
+      type uint8 {
+        range "0..7";
+      }
+      default "0";
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the HCS priority of this cell. {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.HCSPrio";
+    }
+    leaf tcr-max {
+      type enumeration {
+        enum "not used" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - not used";
+        }
+        enum "30" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 30";
+        }
+        enum "60" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 60";
+        }
+        enum "120" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 120";
+        }
+        enum "180" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 180";
+        }
+        enum "240" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 240";
+        }
+      }
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax";
+    }
+    leaf ncr {
+      type uint8 {
+        range "1..16";
+      }
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|TCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NCR";
+    }
+    leaf tcr-max-hyst {
+      type enumeration {
+        enum "not used" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - not used";
+        }
+        enum "10" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 10";
+        }
+        enum "20" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 20";
+        }
+        enum "30" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 30";
+        }
+        enum "40" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 40";
+        }
+        enum "50" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 50";
+        }
+        enum "60" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 60";
+        }
+        enum "70" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 70";
+        }
+      }
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst";
+    }
+    leaf ue-tx-pwr-max-rach {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "A member of the set of parameters used for cell reselection functionality. Defines the maximum transmit power level, specified in {{units}}, that an UE MAY use when accessing the cell on RACH. Used to calculate Pcompensation, which is: max(UE_TXPWR_MAX_RACH - P_MAX, 0), where UE_TXPWR_MAX_RACH is {{param}} and P_MAX is the max transmit power for a UE. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} {{bibref|3GPP-TS.25.304|Section 5.2.3}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UETxPwrMaxRACH";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
+  }
+
+  grouping umts-ran-rrc-timers-g {
+    description
+      "This object contains parameters related to miscellaneous RRC timers and constants.";
+    leaf t300 {
+      type uint16 {
+        range "100..8000";
+      }
+      units "milliseconds";
+      default "1000";
+      config false;
+      description
+        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T300";
+    }
+    leaf t301 {
+      type uint16 {
+        range "100..8000";
+      }
+      units "milliseconds";
+      default "2000";
+      config false;
+      description
+        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T301";
+    }
+    leaf t302 {
+      type uint16 {
+        range "100..8000";
+      }
+      units "milliseconds";
+      default "4000";
+      config false;
+      description
+        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T302";
+    }
+    leaf t304 {
+      type uint16 {
+        range "100 | 200 | 400 | 1000 | 2000";
+      }
+      units "milliseconds";
+      default "2000";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T304";
+    }
+    leaf t305 {
+      type int64;
+      units "minutes";
+      default "30";
+      config false;
+      description
+        "Timer measured in {{units}}. -1 indicates an unbounded timer in which there is no update. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T305";
+    }
+    leaf t307 {
+      type uint8 {
+        range "5 | 10 | 15 | 20 | 30 | 40 | 50";
+      }
+      units "seconds";
+      default "30";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T307";
+    }
+    leaf t308 {
+      type uint16 {
+        range "40 | 80 | 160 | 320";
+      }
+      units "milliseconds";
+      default "160";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T308";
+    }
+    leaf t309 {
+      type uint8 {
+        range "1..8";
+      }
+      units "seconds";
+      default "5";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T309";
+    }
+    leaf t310 {
+      type uint16 {
+        range "40 | 80 | 120 | 160 | 200 | 240 | 280 | 320";
+      }
+      units "milliseconds";
+      default "160";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T310";
+    }
+    leaf t311 {
+      type uint16 {
+        range "250 | 500 | 750 | 1000 | 1250 | 1500 | 1750 | 2000";
+      }
+      units "milliseconds";
+      default "2000";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T311";
+    }
+    leaf t312 {
+      type uint8 {
+        range "0..15";
+      }
+      units "seconds";
+      default "1";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T312";
+    }
+    leaf t313 {
+      type uint8 {
+        range "0..15";
+      }
+      units "seconds";
+      default "3";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T313";
+    }
+    leaf t314 {
+      type uint8 {
+        range "0 | 2 | 4 | 6 | 8 | 12 | 16 | 20";
+      }
+      units "seconds";
+      default "12";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T314";
+    }
+    leaf t315 {
+      type uint16 {
+        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
+      }
+      units "seconds";
+      default "180";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T315";
+    }
+    leaf t316 {
+      type int64;
+      units "seconds";
+      default "30";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}. -1 indicates an unbounded timer in which there is no update.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T316";
+    }
+    leaf t317 {
+      type uint16 {
+        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
+      }
+      units "seconds";
+      config false;
+      description
+        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T317";
+    }
+    leaf n300 {
+      type uint8 {
+        range "0..7";
+      }
+      default "3";
+      config false;
+      description
+        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N300";
+    }
+    leaf n301 {
+      type uint8 {
+        range "0..7";
+      }
+      default "2";
+      config false;
+      description
+        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N301";
+    }
+    leaf n302 {
+      type uint8 {
+        range "0..7";
+      }
+      default "3";
+      config false;
+      description
+        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N302";
+    }
+    leaf n304 {
+      type uint8 {
+        range "0..7";
+      }
+      default "2";
+      config false;
+      description
+        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N304";
+    }
+    leaf n310 {
+      type uint8 {
+        range "0..7";
+      }
+      default "4";
+      config false;
+      description
+        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N310";
+    }
+    leaf n312 {
+      type uint16 {
+        range "1..1000";
+      }
+      default "1";
+      config false;
+      description
+        "Counter. Only the following values are considered valid: 1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N312";
+    }
+    leaf n313 {
+      type uint8 {
+        range "1 | 2 | 4 | 10 | 20 | 50 | 100 | 200";
+      }
+      default "20";
+      config false;
+      description
+        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N313";
+    }
+    leaf n315 {
+      type uint16 {
+        range "1..1000";
+      }
+      default "1";
+      config false;
+      description
+        "Counter. Only the following values are considered valid: :1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N315";
+    }
+    leaf wait-time {
+      type uint8 {
+        range "0..15";
+      }
+      units "seconds";
+      config false;
+      description
+        "Time period the UE has to wait before repeating the rejected procedure. This is an IE used when sending RRC connection reject, redirecting the requesting UE to another frequency. 0 indicates that repetition is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.3.50}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.WaitTime";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
+  }
+
+  grouping umts-ran-drx-g {
+    description
+      "This object contains parameters related to DRX parameters.";
+    leaf drx-cycle-length-coefficient-cs {
+      type uint8 {
+        range "6..9";
+      }
+      config false;
+      description
+        "Defines the DRX cycle length coefficient for CS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN CS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientCS";
+    }
+    leaf drx-cycle-length-coefficient-ps {
+      type uint8 {
+        range "6..9";
+      }
+      config false;
+      description
+        "Defines the DRX cycle length coefficient for PS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN PS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientPS";
+    }
+    leaf utrandrx-cycle-length-coefficient {
+      type uint8 {
+        range "3..9";
+      }
+      config false;
+      description
+        "Defines the DRX cycle length used by UTRAN to count paging occasions for discontinuous reception in Connected Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for UTRAN. {{param}} SHOULD be used by the UTRAN/FAP for UEs in Cell_PCH/Cell_FACH state. {{bibref|3GPP-TS.25.331|Section 10.3.3.49}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.UTRANDRXCycleLengthCoefficient";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
+  }
+
+  grouping umts-ran-power-control-g {
+    description
+      "This object contains parameters related to power control and RACH.";
+    leaf constant-value {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Used by the UE to calculate the initial output power, specified in {{units}}, on PRACH according to the open loop power control procedure. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.11}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.ConstantValue";
+    }
+    leaf power-ramp-step-up {
+      type uint8 {
+        range "1..8";
+      }
+      units "dB";
+      config false;
+      description
+        "Used for the Uplink Common Channel. Defines the Power ramp setup, specified in {{units}}, on PRACH preamble when no acquisition indicator (AI) is detected by the UE. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PowerRampStepUp";
+    }
+    leaf preamble-retrans-max {
+      type uint8 {
+        range "1..64";
+      }
+      config false;
+      description
+        "Used for the Uplink Common Channel. Defines the maximum number of preambles allowed in one preamble ramping cycle. PRACH Preamble Retrans Max is part of \"PRACH power offset\" which is part of \"PRACH system information list\". Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PreambleRetransMax";
+    }
+    leaf persistence-scale-factor {
+      type uint8 {
+        range "2..9";
+      }
+      config false;
+      description
+        "Persistence Scaling Factor for overload control. Parameter in SIB5. The value is the scaling factor multiplied by 10, e.g. 2 is a scaling factor of 0.2";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PersistenceScaleFactor";
+    }
+    leaf m-max {
+      type uint8 {
+        range "1..32";
+      }
+      config false;
+      description
+        "Maximum number of RACH preamble cycles. Defines how many times the PRACH preamble ramping procedure can be repeated before UE MAC reports a failure on RACH transmission to higher layers. Maximum number of RACH preamble cycles is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.MMax";
+    }
+    leaf nb01-min {
+      type uint8 {
+        range "0..50";
+      }
+      config false;
+      description
+        "RACH random back-off lower bound. {{param}} is the lower bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Min";
+    }
+    leaf nb01-max {
+      type uint8 {
+        range "0..50";
+      }
+      config false;
+      description
+        "RACH random back-off upper bound. {{param}} is the Upper bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Max";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
+  }
+
+  grouping umts-ran-cell-restriction-g {
+    description
+      "This object contains parameters related to cell access restriction.";
+    leaf cell-barred {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the FAP is barred from service or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellBarred";
+    }
+    leaf intra-freq-cell-reselection-indicator {
+      type boolean;
+      config false;
+      description
+        "When {{param|CellBarred}} is {{true}}, this indicates whether the intra-frequency cell re-selection is allowed or not. {{param}} has no meaning if {{param|CellBarred}} is {{false}} and MUST be ignored in such cases. {{true}} means that intra-frequency cell re-selection is allowed. {{false}} means that intra-frequency cell re-selection is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.IntraFreqCellReselectionIndicator";
+    }
+    leaf t-barred {
+      type uint16 {
+        range "10 | 20 | 40 | 80 | 160 | 320 | 640 | 1280";
+      }
+      units "seconds";
+      config false;
+      description
+        "The time period in {{units}} during which the UE is barred from accessing the FAP. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.TBarred";
+    }
+    leaf-list access-class-barred-list-cs {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "{{list}} Each entry is an Access Class that is barred from CS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListCS";
+    }
+    leaf-list access-class-barred-list-ps {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "{{list}} Each entry is an Access Class that is barred from PS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListPS";
+    }
+    leaf cell-reserved-for-operator-use {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the FAP is reserved for operator use or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellReservedForOperatorUse";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
+  }
+
+  grouping umts-ran-intra-freq-meas-g {
+    description
+      "This object contains parameters relating to the intra-freq HO control parameters.";
+    leaf measurement-quantity {
+      type enumeration {
+        enum "cpich ec/no" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH Ec/No";
+        }
+        enum "cpich rscp" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH RSCP";
+        }
+        enum "pathloss" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - Pathloss";
+        }
+      }
+      config false;
+      description
+        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity";
+    }
+    leaf filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.FilterCoefficient";
+    }
+    leaf-list intra-frequency-event-identity {
+      type string;
+      config false;
+      max-elements "32";
+      description
+        "{{list}} Each entry is an Event ID from the list of: 1a, 1b, 1c, 1d, 1e, 1f, 1g, 1h, 1i Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} Since the FAP can determine this on its own, it might not be necessary to configure it.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.IntraFrequencyEventIdentity";
+    }
+    leaf-list triggering-condition2-event1a {
+      type enumeration {
+        enum "active" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active";
+        }
+        enum "monitored" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Monitored";
+        }
+        enum "active and monitored" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active and Monitored";
+        }
+        enum "detected" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected";
+        }
+        enum "detected and monitored" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected and Monitored";
+        }
+      }
+      config false;
+      description
+        "{{list}} Indicates which cells can trigger Event 1a. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a";
+    }
+    leaf-list triggering-condition1-event1b {
+      type enumeration {
+        enum "active" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active";
+        }
+        enum "monitored" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Monitored";
+        }
+        enum "active and monitored" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active and Monitored";
+        }
+      }
+      config false;
+      description
+        "{{list}} Indicates which cells can trigger Event 1b. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b";
+    }
+    leaf-list triggering-condition2-event1e {
+      type enumeration {
+        enum "active" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active";
+        }
+        enum "monitored" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Monitored";
+        }
+        enum "active and monitored" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active and Monitored";
+        }
+        enum "detected" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected";
+        }
+        enum "detected and monitored" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected and Monitored";
+        }
+      }
+      config false;
+      description
+        "{{list}} Indicates which cells can trigger Event 1e. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e";
+    }
+    leaf-list triggering-condition1-event1f {
+      type enumeration {
+        enum "active" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active";
+        }
+        enum "monitored" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Monitored";
+        }
+        enum "active and monitored" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active and Monitored";
+        }
+      }
+      config false;
+      description
+        "{{list}} Indicates which cells can trigger Event 1f. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f";
+    }
+    leaf reporting-range-event1a {
+      type uint8 {
+        range "0..29";
+      }
+      units "dB";
+      config false;
+      description
+        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1a to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1a";
+    }
+    leaf reporting-range-event1b {
+      type uint8 {
+        range "0..29";
+      }
+      units "dB";
+      config false;
+      description
+        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1b";
+    }
+    leaf weighting-factor-event1a {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1a";
+    }
+    leaf weighting-factor-event1b {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1b";
+    }
+    leaf report-deactivation-threshold-event1a {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportDeactivationThresholdEvent1a";
+    }
+    leaf reporting-amount-event1a {
+      type int64;
+      config false;
+      description
+        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1a";
+    }
+    leaf reporting-amount-event1c {
+      type int64;
+      config false;
+      description
+        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1c";
+    }
+    leaf reporting-interval-event1a {
+      type uint16 {
+        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1a";
+    }
+    leaf reporting-interval-event1c {
+      type uint16 {
+        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1c";
+    }
+    leaf hysteresis-event1a {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1a";
+    }
+    leaf hysteresis-event1b {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1b";
+    }
+    leaf hysteresis-event1c {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1c";
+    }
+    leaf hysteresis-event1d {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1d";
+    }
+    leaf hysteresis-event1e {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1e";
+    }
+    leaf hysteresis-event1f {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1f";
+    }
+    leaf time-to-trigger-event1a {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1a";
+    }
+    leaf time-to-trigger-event1b {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1b";
+    }
+    leaf time-to-trigger-event1c {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1c";
+    }
+    leaf time-to-trigger-event1d {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1d";
+    }
+    leaf time-to-trigger-event1e {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1e";
+    }
+    leaf time-to-trigger-event1f {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1f";
+    }
+    leaf threshold-used-frequency-event1e {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1e";
+    }
+    leaf threshold-used-frequency-event1f {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1f";
+    }
+    leaf replacement-activation-threshold-event1c {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReplacementActivationThresholdEvent1c";
+    }
+    leaf instance-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.InstanceNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
+  }
+
+  grouping umts-ran-intra-freq-meas-instance-g {
+    description
+      "Table containing parameters relating to a particular instance of intra-freq events.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Alias";
+    }
+    leaf intra-frequency-event-identity {
+      type enumeration {
+        enum "1a" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1a";
+        }
+        enum "1b" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1b";
+        }
+        enum "1c" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1c";
+        }
+        enum "1d" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1d";
+        }
+        enum "1e" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1e";
+        }
+        enum "1f" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1f";
+        }
+      }
+      description
+        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
+    }
+    leaf event-description {
+      type string {
+        length "0..256";
+      }
+      description
+        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to macro cells\", \"addition of enterprise HNB cell to Active Set\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.EventDescription";
+    }
+    leaf measurement-quantity {
+      type enumeration {
+        enum "cpich ec/no" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
+        }
+        enum "cpich rscp" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
+        }
+        enum "pathloss" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - Pathloss";
+        }
+      }
+      config false;
+      description
+        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity";
+    }
+    leaf filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.FilterCoefficient";
+    }
+    leaf-list triggering-condition {
+      type enumeration {
+        enum "active" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active";
+        }
+        enum "monitored" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Monitored";
+        }
+        enum "active and monitored" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active and Monitored";
+        }
+        enum "detected" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected";
+        }
+        enum "detected and monitored" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected and Monitored";
+        }
+      }
+      config false;
+      description
+        "{{list}} Indicates which cells can trigger the event instance. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition";
+    }
+    leaf reporting-range {
+      type uint8 {
+        range "0..29";
+      }
+      units "dB";
+      config false;
+      description
+        "Applicable to events 1a, 1b, otherwise not needed. Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingRange";
+    }
+    leaf weighting-factor {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Applicable to events 1a, 1b, otherwise not needed. Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.WeightingFactor";
+    }
+    leaf report-deactivation-threshold {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Applicable to events 1a, otherwise not needed. Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportDeactivationThreshold";
+    }
+    leaf reporting-amount {
+      type int64;
+      config false;
+      description
+        "Applicable to events 1a, 1c, otherwise not needed. Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingAmount";
+    }
+    leaf reporting-interval {
+      type uint16 {
+        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Applicable to events 1a, 1c, otherwise not needed. Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingInterval";
+    }
+    leaf hysteresis {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Hysteresis";
+    }
+    leaf time-to-trigger {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TimeToTrigger";
+    }
+    leaf threshold-used-frequency {
+      type int64;
+      config false;
+      description
+        "Applicable to events 1e, 1f, otherwise not needed. Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ThresholdUsedFrequency";
+    }
+    leaf replacement-activation-threshold {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Applicable only to event 1c Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReplacementActivationThreshold";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
+  }
+
+  grouping umts-ran-inter-freq-meas-g {
+    description
+      "This object contains parameters relating to the inter-freq HO related control parameters.";
+    leaf measurement-quantity {
+      type enumeration {
+        enum "cpich ec/no" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH Ec/No";
+        }
+        enum "cpich rscp" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH RSCP";
+        }
+      }
+      config false;
+      description
+        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity";
+    }
+    leaf filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.FilterCoefficient";
+    }
+    leaf-list inter-frequency-event-identity {
+      type string;
+      config false;
+      max-elements "32";
+      description
+        "{{list}} Each entry is an Event ID from the list of: 2a, 2b, 2c, 2d, 2e,2f Defines the identity of the event used to trigger inter-frequency UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InterFrequencyEventIdentity";
+    }
+    leaf weighting-factor-event2a {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2a";
+    }
+    leaf weighting-factor-event2b {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2b";
+    }
+    leaf weighting-factor-event2d {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2d";
+    }
+    leaf weighting-factor-event2f {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2f";
+    }
+    leaf hysteresis-event2a {
+      type uint8 {
+        range "0..29";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2a";
+    }
+    leaf hysteresis-event2b {
+      type uint8 {
+        range "0..29";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2b";
+    }
+    leaf hysteresis-event2d {
+      type uint8 {
+        range "0..29";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2d";
+    }
+    leaf hysteresis-event2f {
+      type uint8 {
+        range "0..29";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2f";
+    }
+    leaf time-to-trigger-event2a {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2a";
+    }
+    leaf time-to-trigger-event2b {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2b";
+    }
+    leaf time-to-trigger-event2d {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2d";
+    }
+    leaf time-to-trigger-event2f {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2f";
+    }
+    leaf threshold-used-frequency-event2b {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2b";
+    }
+    leaf threshold-used-frequency-event2d {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2d";
+    }
+    leaf threshold-used-frequency-event2f {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2f";
+    }
+    leaf instance-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InstanceNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
+  }
+
+  grouping umts-ran-inter-freq-meas-instance-g {
+    description
+      "Table containing parameters relating to a particular instance of inter-freq events.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Alias";
+    }
+    leaf intra-frequency-event-identity {
+      type enumeration {
+        enum "2a" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2a";
+        }
+        enum "2b" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2b";
+        }
+        enum "2c" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2c";
+        }
+        enum "2d" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2d";
+        }
+        enum "2e" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2e";
+        }
+        enum "2f" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2f";
+        }
+      }
+      description
+        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
+    }
+    leaf event-description {
+      type string {
+        length "0..256";
+      }
+      description
+        "A free-form description of the way the event instance is meant to be used. E.g. \"detecting cell edge to prepare for hand-out\", \"cancel hand-out preparation\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.EventDescription";
+    }
+    leaf measurement-quantity {
+      type enumeration {
+        enum "cpich ec/no" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
+        }
+        enum "cpich rscp" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
+        }
+      }
+      config false;
+      description
+        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity";
+    }
+    leaf filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.FilterCoefficient";
+    }
+    leaf weighting-factor {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.WeightingFactor";
+    }
+    leaf hysteresis {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Hysteresis";
+    }
+    leaf time-to-trigger {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.TimeToTrigger";
+    }
+    leaf threshold-used-frequency {
+      type int64;
+      config false;
+      description
+        "Applicable to events 2b, 2d, 2f, otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdUsedFrequency";
+    }
+    leaf threshold-non-used-frequency {
+      type int64;
+      config false;
+      description
+        "Applicable to events 2a, 2b, 2c, 2e otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold non used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdNonUsedFrequency";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
+  }
+
+  grouping umts-ran-inter-rat-meas-g {
+    description
+      "This object contains parameters relating to the inter-RAT HO related control parameters. This is specifically for GERAN system.";
+    leaf gsm-filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the filter coefficient for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.29}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.GSMFilterCoefficient";
+    }
+    leaf bsic-verification-required {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.BSICVerificationRequired";
+    }
+    leaf weighting-factor {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.WeightingFactor";
+    }
+    leaf hysteresis {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Hysteresis";
+    }
+    leaf time-to-trigger {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.TimeToTrigger";
+    }
+    leaf threshold-own-system {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOwnSystem";
+    }
+    leaf threshold-other-system {
+      type int64;
+      config false;
+      description
+        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOtherSystem";
+    }
+    leaf instance-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.InstanceNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
+  }
+
+  grouping umts-ran-inter-rat-meas-instance-g {
+    description
+      "Table containing parameters relating to a particular instance of inter-freq events.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Alias";
+    }
+    leaf inter-rat-event-identity {
+      type enumeration {
+        enum "3a" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3a";
+        }
+        enum "3b" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3b";
+        }
+        enum "3c" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3c";
+        }
+        enum "3d" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3d";
+        }
+      }
+      description
+        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity";
+    }
+    leaf event-description {
+      type string {
+        length "0..256";
+      }
+      description
+        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to GSM macrocell\", \"cancel hand-out preparation due to decreasing macrocell quality\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.EventDescription";
+    }
+    leaf filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.FilterCoefficient";
+    }
+    leaf bsic-verification-required {
+      type boolean;
+      config false;
+      description
+        "Applicable only to GSM events. Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.BSICVerificationRequired";
+    }
+    leaf weighting-factor {
+      type uint8 {
+        range "0..20";
+      }
+      config false;
+      description
+        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.WeightingFactor";
+    }
+    leaf hysteresis {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Hysteresis";
+    }
+    leaf time-to-trigger {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.TimeToTrigger";
+    }
+    leaf threshold-own-system {
+      type int64;
+      config false;
+      description
+        "Applicable only to event 3a, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOwnSystem";
+    }
+    leaf threshold-other-system {
+      type int64;
+      config false;
+      description
+        "Applicable to events 3a, 3b, 3c, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOtherSystem";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
+  }
+
+  grouping umts-ran-ue-internal-meas-g {
+    description
+      "This object contains parameters relating to the UE internal measurement control parameters.";
+    leaf filter-coefficient {
+      type uint8 {
+        range "0..9 | 11 | 13 | 15 | 17 | 19";
+      }
+      config false;
+      description
+        "Defines the filter coefficient for UE internal measurement. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.79}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.FilterCoefficient";
+    }
+    leaf ue-tx-pwr-threshold-event6a {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Defines the threshold for UE transmit power above which Event 6a is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6a";
+    }
+    leaf time-to-trigger-event6a {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the period in {{units}} between detection of Event 6a and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6a";
+    }
+    leaf ue-tx-pwr-threshold-event6b {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Defines the threshold for UE transmit power above which Event 6b is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6b";
+    }
+    leaf time-to-trigger-event6b {
+      type uint16 {
+        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the period in {{units}} between detection of Event 6b and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6b";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
+  }
+
+  grouping umts-ran-rf-g {
+    description
+      "This object contains parameters relating to the RF configuration.";
+    leaf-list uarfcndl {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433|Section 9.2.1.65}} Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for UARFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|UARFCNDLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The UARFCN values supplied to the list are derived based on the formula defined in {{bibref|3GPP-TS.25.104|Section 5.4.3}} The order of the UARFCN entries has no significance. The carrier spacing in FDD mode is fixed as defined in {{bibref|3GPP-TS.25.104}}. Therefore, the FAP can unambiguously derive the UL UARFCN value based on the selected DL UARFCN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDL";
+    }
+    leaf uarfcndl-in-use {
+      type uint64;
+      description
+        "The DL UARFCN being used by the FAP. Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|UARFCNDL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|UARFCNDL}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLInUse";
+    }
+    leaf uarfcnul-in-use {
+      type uint64;
+      description
+        "The UL UARFCN being used by the FAP. The UL UARFCN that corresponds to {{param|UARFCNDLInUse}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNULInUse";
+    }
+    leaf-list uarfcndl-to-protect {
+      type string;
+      config false;
+      max-elements "64";
+      description
+        "{{list}} Each item is a DL UARFCNs to be protected from adjacent channel interference. \"Adjacent channel\" in this context means offset from the FAP's UARFCN by 5MHz. {{bibref|3GPP-TS.25.104|Section 6.4.6}} If any of the items in the list are adjacent to the FAP's own DL channel, the FAP MUST take the Primary CPICH code power measured on these channels into account as part of its maximum transmit power self-configuration. The UARFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators (only the latter is mandated by the {{bibref|3GPP-TS.25.104}} requirements). The list SHOULD take into account the ability of the FAP to self-configure its own DL UARFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the UARFCN selected by the FAP. For example, if only adjacent operator protection is required and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the UARFCNs immediately above and below the range of channels owned by the FAP operator. Adjacent channel protection can cause the FAP transmit power to be reduced down to as low as 8dBm. If {{empty}} then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLToProtect";
+    }
+    leaf-list primary-scrambling-code {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a Primary DL Scrambling Code used by the FDD mode cell with a numeric range between 0 and 511 inclusive. {{bibref|3GPP-TS.25.433|Section 9.2.2.34}} Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for {{param}} is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PrimaryScramblingCodeInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PSC values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The following are examples of valid PSC string: :\"20\" ::(explicitly specifies a single PSC value) :\"20,30,40\" ::(specifies 3 possible PSC values to select from) \"20..40\" ::(specifies 21 possible values between 20 and 40, inclusive) \"20..40,50\" ::(specifies 22 possible values between 20 and 40 inclusive and a single value 50) The order of the items has no significance.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode";
+    }
+    leaf primary-scrambling-code-in-use {
+      type uint64;
+      description
+        "The PSC being used by the FAP. Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PrimaryScramblingCode}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PrimaryScramblingCode}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCodeInUse";
+    }
+    leaf maxfap-tx-power-expanded {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Defines the maximum transmission power allowed on the FAP, maximum value for the linear sum of the power of all downlink physical channels, that is allowed to be used in a cell. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -30.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded";
+    }
+    leaf maxfap-tx-power-in-use-expanded {
+      type int64;
+      units "dBm";
+      description
+        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -30.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPowerExpanded}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerInUseExpanded";
+    }
+    leaf max-ul-tx-power {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Defines the maximum transmission power level a UE can use on PRACH. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -50 to 33 incremented by 1. {{bibref|3GPP-TS.25.331|Section 10.3.6.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPower";
+    }
+    leaf max-ul-tx-power-in-use {
+      type int64;
+      units "dBm";
+      description
+        "The maximum transmission power level a UE can use on PRACH. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxULTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPowerInUse";
+    }
+    leaf pcpich-power {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "The value of the transmission power of the Primary Common PIlot CHannel (P-CPICH). The P-CPICH physical channel carries the common pilots of the cell. Parameter in SIB5. {{param}} is expressed as a range of allowed transmission power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -10.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPower";
+    }
+    leaf pcpich-power-in-use {
+      type int64;
+      units "dBm";
+      description
+        "The P-CPICH power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -10.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|PCPICHPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPowerInUse";
+    }
+    leaf power-offset-pilot-dpdch {
+      type uint8 {
+        range "0..24";
+      }
+      units "dB";
+      config false;
+      description
+        "Defines the power offset between pilot channel and DPDCH. Actual values of the offset are 0.0 {{units}} to 6.0 {{units}} in steps of 0.25 {{units}}. The value of {{param}} divided by 4 yields the actual value of the offset. {{bibref|3GPP-TS.25.331|Section 10.3.6.18}} {{bibref|3GPP-TS.25.214|Section 5.2.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PowerOffsetPilotDPDCH";
+    }
+    leaf fap-coverage-target {
+      type uint8 {
+        range "50..150";
+      }
+      units "dB";
+      config false;
+      description
+        "Defines the target value measured in {{units}} for the range of the FAP's DL coverage, in terms of RF propagation loss. This value can be used by the FAP's self-configuration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{bibref|3GPP-TS.25.967|Section 7.2.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPCoverageTarget";
+    }
+    leaf fap-quality-target-ec-io {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the target value measured in dB for the downlink signal quality of the FAP in terms of CPICH Ec/Io, thereby clarifying the meaning of \"FAPCoverageTarget\". Actual values of the FAPQualityTargetEcIo are -20 dB to 0 dB in steps of 0.1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPQualityTargetEcIo";
+    }
+    leaf psch-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the transmission power offset measured in {{units}} of the Primary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PSCHPower";
+    }
+    leaf ssch-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the transmission power offset measured in {{units}} of the Secondary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.SSCHPower";
+    }
+    leaf pich-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the maximum transmission power offset measured in {{units}} of the PICH channel relative to the Primary CPICH transmission power. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.2.1.49A}} {{bibref|3GPP-TS.25.331|Section 10.3.6.50}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PICHPower";
+    }
+    leaf pch-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the transmission power offset measured in {{units}} of the PCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.3.1 and Section 9.2.1.21}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCHPower";
+    }
+    leaf fach-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the transmission power offset measured in {{units}} of the FACH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.6.1 and Section 9.2.1.21}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FACHPower";
+    }
+    leaf bch-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the transmission power offset measured in {{units}} of the BCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 9.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.BCHPower";
+    }
+    leaf aich-power {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Defines the transmission power offset measured in {{units}} of one AICH relative to the Primary CPICH power. Parameter defined in SIB5 {{bibref|3GPP-TS.25.331|Section 10.3.6.3}}. Transmission power level of AICH, AP-AICH and CD/CA-ICH channels compared to CPICH. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.2.2.D}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.AICHPower";
+    }
+    leaf ctch-allocation-period {
+      type uint8 {
+        range "1..255";
+      }
+      config false;
+      description
+        "The value defines 'N' multiples of M(TTI) for CBS DRX calculations at the UE side.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CTCHAllocationPeriod";
+    }
+    leaf cbs-frame-offset {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Value of CBS frame offset (CTCH) on DL FACH. Parameter in SIB5";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CBSFrameOffset";
+    }
+    leaf max-tti {
+      type uint8 {
+        range "1..255";
+      }
+      config false;
+      description
+        "Defines the number of radio frames in the TTI of the FACH used for CTCH (MTTI).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxTTI";
+    }
+    leaf noise-rise-limit-lower-value {
+      type uint16 {
+        range "0..500";
+      }
+      config false;
+      description
+        "Defines the lower value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not exceed the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} The Noise Rise Limit range identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue";
+    }
+    leaf noise-rise-limit-upper-value {
+      type uint16 {
+        range "0..500";
+      }
+      config false;
+      description
+        "Defines the upper value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not be below the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} NoiseRiseLimit identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue";
+    }
+    leaf noise-rise-limit-in-use {
+      type uint16 {
+        range "0..500";
+      }
+      description
+        "Actual value of the Noise Rise Limit that the FAP uses. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.";
+  }
+
+  grouping umts-ran-neighbor-list-g {
+    description
+      "This object contains parameters relating to the neighbor list.";
+    leaf max-intra-freq-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxIntraFreqCellEntries";
+    }
+    leaf max-inter-freq-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxInterFreqCellEntries";
+    }
+    leaf intra-freq-cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCellNumberOfEntries";
+    }
+    leaf inter-freq-cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCellNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
+  }
+
+  grouping umts-ran-neighbor-list-intra-freq-cell-g {
+    description
+      "Table containing the intra-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MustInclude";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      config false;
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PLMNID";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RNCID";
+    }
+    leaf cid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65533 | 65535";
+      }
+      config false;
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RAC";
+    }
+    leaf ura {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.URA";
+    }
+    leaf pcpich-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Primary CPICH scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHScramblingCode";
+    }
+    leaf pcpich-tx-power {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHTxPower";
+    }
+    leaf collocated-inter-freq-cell {
+      type uint32 {
+        range "0..268435455";
+      }
+      config false;
+      description
+        "Provides identity of collocated inter-frequency Cell. Needed for pathloss estimation, in case the femto environment masks intra-frequency neighbor. Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CollocatedInterFreqCell";
+    }
+    leaf max-tx-power {
+      type int64;
+      units "0.1 dBm";
+      config false;
+      description
+        "Cell Max Tx Power. Parameter needed in HNB power calibration, for protection of neighbour cells. Actual values of the power are -30.0 dBm to 60.0 dBm in steps of 0.1 dB. The value of MaxTxPower divided by 10 yields the actual value of the power. C.f {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxTxPower";
+    }
+    leaf max-dpc-htx-power {
+      type int64;
+      units "0.1 dBm";
+      config false;
+      description
+        "Maximum DL DPCH Tx Power per UE configured in the cell (for CS UEs). Parameter may be used by FAP to protect the DL budget allocated to neighbouring UEs served by neighbour cells. C.f (max 10 dB below max Tx power) {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}} Actual values of the power are -40.0 dBm to 50.0 dBm in steps of 0.1 dB. The value of MaxDPCHtxPower divided by 10 yields the actual value of the power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxDPCHtxPower";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
+  }
+
+  grouping umts-ran-neighbor-list-inter-freq-cell-g {
+    description
+      "Table containing the inter-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.MustInclude";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      config false;
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PLMNID";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RNCID";
+    }
+    leaf cid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.CID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65533 | 65535";
+      }
+      config false;
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RAC";
+    }
+    leaf ura {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.URA";
+    }
+    leaf uarfcnul {
+      type uint16 {
+        range "0..16383";
+      }
+      config false;
+      description
+        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNUL";
+    }
+    leaf uarfcndl {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNDL";
+    }
+    leaf pcpich-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Primary CPICH scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHScramblingCode";
+    }
+    leaf pcpich-tx-power {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHTxPower";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
+  }
+
+  grouping umts-ran-neighbor-list-inter-rat-cell-g {
+    description
+      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
+    leaf max-gsm-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.MaxGSMEntries";
+    }
+    leaf gsm-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
+  }
+
+  grouping umts-ran-neighbor-list-inter-rat-cell-gsm-g {
+    description
+      "Table containing the inter-RAT cell list for GSM provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      config false;
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
+    }
+    leaf lac {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
+    }
+    leaf bsic {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
+    }
+    leaf ci {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
+    }
+    leaf band-indicator {
+      type enumeration {
+        enum "gsm 850" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
+        }
+        enum "gsm 900" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
+        }
+        enum "dcs 1800" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
+        }
+        enum "pcs 1900" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
+        }
+      }
+      config false;
+      description
+        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
+    }
+    leaf bccharfcn {
+      type uint16 {
+        range "0..1023";
+      }
+      description
+        "ARFCN of this cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
+  }
+
+  grouping umts-ran-neighbor-list-in-use-g {
+    description
+      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.UMTS.RAN.NeighborList.}} configuration of adding and excluding cells.";
+    leaf max-intra-freq-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxIntraFreqCellEntries";
+    }
+    leaf max-inter-freq-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxInterFreqCellEntries";
+    }
+    leaf intra-freq-cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCellNumberOfEntries";
+    }
+    leaf inter-freq-cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCellNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
+  }
+
+  grouping umts-ran-neighbor-list-in-use-intra-freq-cell-g {
+    description
+      "Table containing the intra-frequency cell list.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PLMNID";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RNCID";
+    }
+    leaf cid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.CID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65533 | 65535";
+      }
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RAC";
+    }
+    leaf ura {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.URA";
+    }
+    leaf pcpich-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Primary CPICH scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PCPICHScramblingCode";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
+  }
+
+  grouping umts-ran-neighbor-list-in-use-inter-freq-cell-g {
+    description
+      "Table containing the inter-frequency cell list.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PLMNID";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RNCID";
+    }
+    leaf cid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.CID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65533 | 65535";
+      }
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RAC";
+    }
+    leaf ura {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.URA";
+    }
+    leaf uarfcnul {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNUL";
+    }
+    leaf uarfcndl {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNDL";
+    }
+    leaf pcpich-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Primary CPICH scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PCPICHScramblingCode";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
+  }
+
+  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-g {
+    description
+      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
+    leaf max-gsm-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
+    }
+    leaf gsm-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
+  }
+
+  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
+    description
+      "Table containing the inter-RAT cell list for GSM.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
+    }
+    leaf lac {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
+    }
+    leaf bsic {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
+    }
+    leaf ci {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
+    }
+    leaf band-indicator {
+      type enumeration {
+        enum "gsm 850" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
+        }
+        enum "gsm 900" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
+        }
+        enum "dcs 1800" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
+        }
+        enum "pcs 1900" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
+        }
+      }
+      description
+        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
+    }
+    leaf bccharfcn {
+      type uint16 {
+        range "0..1023";
+      }
+      description
+        "ARFCN of this cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
+  }
+
+  grouping umts-rab-g {
+    description
+      "This object contains parameters relating to Radio Access layers {{bibref|3GPP-TS.32.405}}";
+    leaf rab-succ-estab-cs {
+      type uint64;
+      description
+        "The number of successfully established RABs (with or without queueing) for CS domain.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabCS";
+    }
+    leaf rab-fail-estab-cs {
+      type uint64;
+      description
+        "The number of RAB establishment failures for CS domain.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabCS";
+    }
+    leaf rab-succ-estab-ps {
+      type uint64;
+      description
+        "The number of successfully established RABs for PS domain.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabPS";
+    }
+    leaf rab-fail-estab-ps {
+      type uint64;
+      description
+        "The number of RABs failed to establish for PS domain.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabPS";
+    }
+    leaf rabcs-setup-time-mean {
+      type uint64;
+      units "milliseconds";
+      description
+        "The mean time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMean";
+    }
+    leaf rabcs-setup-time-max {
+      type uint64;
+      units "milliseconds";
+      description
+        "The maximum time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMax";
+    }
+    leaf rabps-setup-time-mean {
+      type uint64;
+      units "milliseconds";
+      description
+        "The mean time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMean";
+    }
+    leaf rabps-setup-time-max {
+      type uint64;
+      units "milliseconds";
+      description
+        "The maximum time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMax";
+    }
+    leaf fail-ho {
+      type uint64;
+      description
+        "The number of failed Handovers.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.FailHO";
+    }
+    leaf succ-ho {
+      type uint64;
+      description
+        "The number of successful Handovers.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.SuccHO";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.";
+  }
+
+  grouping lte-g {
+    description
+      "This object contains parameters relating to configuring the LTE FAP.";
+    leaf tunnel-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.TunnelNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.";
+  }
+
+  grouping lte-tunnel-g {
+    description
+      "This object contains a table of all tunnel instances configured for the LTE FAP.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Alias";
+    }
+    leaf tunnel-ref {
+      type string {
+        length "0..256";
+      }
+      description
+        "This is the reference to an IPsec tunnel instance used by the LTE FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.TunnelRef";
+    }
+    leaf-list plmnid {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "{{list}} Optional list of PLMM IDs associated with the tunnel, which can be used for selecting the tunnel. Each PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.PLMNID";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
+  }
+
+  grouping lte-epc-g {
+    description
+      "This object contains parameters relating to configuring LTE EPC.";
+    leaf-list allowed-ciphering-algorithm-list {
+      type enumeration {
+        enum "eea0" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - EEA0";
+        }
+        enum "128-eea1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA1";
+        }
+        enum "128-eea2" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA2";
+        }
+      }
+      config false;
+      min-elements 1;
+      description
+        "{{list}} Each item is a ciphering algorithm allowed to be used for RRC and UP confidentiality protection as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList";
+    }
+    leaf-list allowed-integrity-protection-algorithm-list {
+      type enumeration {
+        enum "128-eia1" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA1";
+        }
+        enum "128-eia2" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA2";
+        }
+      }
+      config false;
+      min-elements 1;
+      description
+        "{{list}} Each item is a integrity protection algorithm allowed to be used for RRC as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList";
+    }
+    leaf tac {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "TAC (Tracking Area Code) for LTE FAP as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.TAC";
+    }
+    leaf eaid {
+      type uint32 {
+        range "0..16777216";
+      }
+      config false;
+      description
+        "Emergency Area ID that uniquely identifies the area of emergency for Earthquake and Tsunami Warning Services (ETWS). Corresponds to Emergency Area ID in {{bibref|3GPP-TS.36.413|Section 9.2.1.47}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.EAID";
+    }
+    leaf max-plmn-list-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxPLMNListEntries";
+    }
+    leaf plmn-list-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNListNumberOfEntries";
+    }
+    leaf max-qo-s-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.EPC.QoS.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxQoSEntries";
+    }
+    leaf qo-s-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoSNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.";
+  }
+
+  grouping lte-epc-plmn-list-g {
+    description
+      "This object contains parameters relating to list of PLMN identity specific to LTE EPC definition, called PLMN-IdentityList, as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs. At minimum 1 item MUST be present in this list, and maximum of 6 items.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Alias";
+    }
+    leaf is-primary {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this {{param|PLMNID}} is a primary PLMN or not. If there is more than one instance in {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table, then ACS MUST set this {{param}} set to {{true}} in only one instance.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.IsPrimary";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.PLMNID";
+    }
+    leaf cell-reserved-for-operator-use {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.CellReservedForOperatorUse";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
+  }
+
+  grouping lte-epc-qo-s-g {
+    description
+      "This object contains parameters relating to configuring QoS in LTE EPC.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Alias";
+    }
+    leaf qci {
+      type uint8 {
+        range "1..20";
+      }
+      description
+        "QoS class identity as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.QCI";
+    }
+    leaf type {
+      type enumeration {
+        enum "gbr" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - GBR";
+        }
+        enum "non-gbr" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - Non-GBR";
+        }
+      }
+      config false;
+      description
+        "Defines the type of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type";
+    }
+    leaf priority {
+      type uint8 {
+        range "1..20";
+      }
+      config false;
+      description
+        "Priority of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Priority";
+    }
+    leaf packet-delay-budget {
+      type uint16 {
+        range "50 | 100 | 150 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 | 1500 | 2000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Defines the Packet delay budget, specified in {{units}}, as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.PacketDelayBudget";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
+  }
+
+  grouping lte-ran-g {
+    description
+      "This object contains parameters relating to the LTE RAN level configuration.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.";
+  }
+
+  grouping lte-ran-common-g {
+    description
+      "This object contains parameters relating to the common configuration in LTE RAN.";
+    leaf cell-identity {
+      type uint32 {
+        range "0..268435455";
+      }
+      config false;
+      description
+        "Cell Identity as specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.CellIdentity";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.";
+  }
+
+  grouping lte-ran-s1-ap-g {
+    description
+      "This object contains parameters relating to the S1AP configuration.";
+    leaf-list t-reloc-prep {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a maximum time for the Handover Preparation procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started when the LTE FAP sends the HANDOVER REQUIRED message. Upon reception of the HANDOVER COMMAND message the LTE FAP shall stop the timer. Corresponds to parameter TS1RELOCprep defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If the LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If the LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocPrep";
+    }
+    leaf-list t-reloc-overall {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a maximum time for the protection of the overall handover procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started reception of the HANDOVER COMMAND message. Corresponds to parameter TS1RELOCOverall defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocOverall";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
+  }
+
+  grouping lte-ran-s1-u-g {
+    description
+      "This object contains parameters relating to the S1-U configuration.";
+    leaf gtpu-echo-interval {
+      type uint8 {
+        range "0 | 60..max";
+      }
+      units "seconds";
+      config false;
+      description
+        "Defines the interval in {{units}} between each GTP-U Echo Request that LTE FAP sends to the GTP-U peer, as specified in {{bibref|3GPP-TS.29.281|Section 7.2.1}}. If the value of {{param}} is equal to 0, then this functionality is supressed and thus LTE FAP does not send GTP-U Echo Request. If there is no GTP-U path in use, then no Echo Request is sent regardless of the value of {{param}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.GTPUEchoInterval";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.";
+  }
+
+  grouping lte-ran-rf-g {
+    description
+      "This object contains parameters relating to the RF, see {{bibref|3GPP-TS.32.592|Section 6.1.7.1}}.";
+    leaf-list earfcndl {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the downlink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NDL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNDL";
+    }
+    leaf-list earfcnul {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the uplink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NUL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNUL";
+    }
+    leaf freq-band-indicator {
+      type uint8 {
+        range "1..40";
+      }
+      config false;
+      description
+        "Frequency band indicator. Corresponds to parameter freqBandIndicator in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.FreqBandIndicator";
+    }
+    leaf-list dl-bandwidth {
+      type uint8 {
+        range "6 | 15 | 25 | 50 | 75 | 100";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a downlink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter dl_Bandwidth in MIB (Master Information Block) in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.DLBandwidth";
+    }
+    leaf-list ul-bandwidth {
+      type uint8 {
+        range "6 | 15 | 25 | 50 | 75 | 100";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is an uplink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ULBandwidth";
+    }
+    leaf-list reference-signal-power {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a downlink reference-signal transmit power, specified in dBm, with a numeric range between -60 and 50 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ReferenceSignalPower";
+    }
+    leaf-list phy-cell-id {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a physical cell ID with a numeric range between 0 and 503 inclusive. Represents the list of physical cell identities LTE FAP to choose from. In case there is more than one item in the list, the first item contains the most preferred value. As specified in {{bibref|3GPP-TS.36.211|Section 6.11}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PhyCellID";
+    }
+    leaf-list psch-power-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a power offset, specified in dB, of the Primary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PSCHPowerOffset";
+    }
+    leaf-list ssch-power-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a power offset, specified in dB, of the Secondary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.SSCHPowerOffset";
+    }
+    leaf-list pbch-power-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a power offset, specified in dB, of the Physical Broadcast Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PBCHPowerOffset";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.";
+  }
+
+  grouping lte-ran-phy-g {
+    description
+      "This object contains parameters relating to the physical layer level configuration.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.";
+  }
+
+  grouping lte-ran-phy-antenna-info-g {
+    description
+      "This object contains parameters relating to the antenna configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.1}}).";
+    leaf antenna-ports-count {
+      type uint8 {
+        range "1 | 2 | 4";
+      }
+      description
+        "Defines the number of cell specific antenna ports according to {{bibref|3GPP-TS.36.211|Section 6.2.1}}. A UE in IDLE mode acquires the information about the number of transmit antenna ports according to {{bibref|3GPP-TS.36.212|Section 5.3.1.1}}. Corresponds to antennaPortsCount IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.AntennaPortsCount";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
+  }
+
+  grouping lte-ran-phy-pdsch-g {
+    description
+      "This object contains parameters relating to the PDSCH (Physical Downlink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.2}}).";
+    leaf-list pb {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a Eb/Ea value with a numeric range between 0 and 3 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of this parameter is the same for all UEs in the cell. Eb repsents EPRE of PDSCH REs type B, i.e. REs in OFDM symbols that include reference symbols, as specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pb";
+    }
+    leaf-list pa {
+      type int64;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a Ea/Ers value. In case there is more than one item in the list, the first item contains the most preferred value. Ea represents EPRE of PDSCH REs type A, i.e. REs in OFDM symbols that do not include reference symbols. Ers represents EPRE of reference symbols REs. Specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. Actual values of range are -6.00 to 3.00dB. The value of each item in {{param}} divided by 100 yields the actual value. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pa";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
+  }
+
+  grouping lte-ran-phy-srs-g {
+    description
+      "This object contains parameters relating to the UL SRS (Sounding Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.3}}).";
+    leaf srs-enabled {
+      type boolean;
+      config false;
+      description
+        "Indicates whether UL SRS (Sounding RS) is enabled or not. If {{true}}, UL Sounding RS is enabled. If {{false}}, UL Sounding RS is disabled. Corresponds to SoundingRS-UL-ConfigCommonIE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSEnabled";
+    }
+    leaf-list srs-bandwidth-config {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a index into tables of cell specific SRS Bandwidth Configuration, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. SRS Bandwidth Configuration tables are specified in {{bibref|3GPP-TS.36.211|Table 5.5.3.2-1, 5.5.3.2-2, 5.5.3.2-3 and 5.5.3.2– 4}}. Corresponds to srs-BandwidthConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSBandwidthConfig";
+    }
+    leaf srs-max-up-pts {
+      type boolean;
+      config false;
+      description
+        "Defines whether reconfiguration of SRS applies to UpPTS or not. If {{true}}, SRS applies to UpPTS. If {{false}}, SRS does not apply to UpPTS. Corresponds to srs-MaxUpPts specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and srsMaxUpPts specified in {{bibref|3GPP-TS.36.211|Section 5.5.3.2}}. This parameter is applicable to TDD mode only.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSMaxUpPTS";
+    }
+    leaf ack-nack-srs-simultaneous-transmission {
+      type boolean;
+      config false;
+      description
+        "Defines whether a UE can simultaneously transmit SRS and HARQ ACK/NACK or not. If {{true}}, simultaneous transmission is allowed. If {{false}}, simultaneous transmission is not allowed. Corresponds to ackNackSRS-SimultaneousTransmission specfied in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Simultaneous-AN-and-SRS specified in {{bibref|3GPP-TS.36.213|Section 8.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.AckNackSRSSimultaneousTransmission";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
+  }
+
+  grouping lte-ran-phy-prach-g {
+    description
+      "This object contains parameters relating to the PRACH (Physical Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.4}}).";
+    leaf-list root-sequence-index {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a Logical root sequence index with a numeric range between 0 and 837 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Logical root sequence index is used to determine 64 physical RACH preamble sequences available in the cell. Corresponds to RACH_ROOT_SEQUENCE parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.RootSequenceIndex";
+    }
+    leaf-list configuration-index {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is an index to the table defining PRACH resources within the frame with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to PRACH-Configuration-Index parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ConfigurationIndex";
+    }
+    leaf high-speed-flag {
+      type boolean;
+      config false;
+      description
+        "Indicates whether restricted set or unrestricted set of preambles is used. If {{true}}, indicates restricted set. If {{false}}, indicates unrestricted set. Corresponds to highSpeedFlag parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and high-speed-flag parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.HighSpeedFlag";
+    }
+    leaf-list zero-correlation-zone-config {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a value used for preamble sequence generation with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Each item corresponds to zeroCorrelationZoneConfig parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to NCS parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ZeroCorrelationZoneConfig";
+    }
+    leaf-list freq-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item represents the first available physical resource block number for PRACH. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to prach-FreqOffset parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and nPRBoffsetRA parameter defined {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.FreqOffset";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
+  }
+
+  grouping lte-ran-phy-pucch-g {
+    description
+      "This object contains parameters relating to the PUCCH (Physical Uplink Control Channel) configuration. (see {{bibref|3GPP-TS.32.592|Section 6.1.1.5}})";
+    leaf delta-pucch-shift {
+      type enumeration {
+        enum "ds1" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds1";
+        }
+        enum "ds2" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds2";
+        }
+        enum "ds3" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds3";
+        }
+      }
+      config false;
+      description
+        "Defines the cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. It is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7} . Corresponds to deltaPUCCH-Shift parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Delta-shiftPUCCH parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift";
+    }
+    leaf-list nrbcqi {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a value that defines the bandwidth in terms of resource blocks available for use by PUCCH formats 2/2a/2b transmission in each slot, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to nRB-CQI parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(2) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive.If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NRBCQI";
+    }
+    leaf ncsan {
+      type uint8 {
+        range "0..7";
+      }
+      description
+        "Defines the number of cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. The value is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7}. Corresponds to nCS-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(1) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NCSAN";
+    }
+    leaf-list n1-pucchan {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a value that determines resources used for transmission of PUCCH format 1/1a/1b and 2/2a/2b, with a numeric range between 0 and 2047 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to n1PUCCH-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NPUCCH(1) parameter defined {{bibref|3GPP-TS.36.213|Section 10.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.N1PUCCHAN";
+    }
+    leaf-list cqipucch-resource-index {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a value that indicates the position of PUCCH, with a numeric range between 0 and 1185 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. . Corresponds to the cqi-PUCCH-ResourceIndex IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. and to parameter nPUCCH(2) specified in {{bibref|3GPP-TS.36.213|Section 7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.CQIPUCCHResourceIndex";
+    }
+    leaf k {
+      type uint8 {
+        range "1..4";
+      }
+      units "Resource Blocks";
+      description
+        "Sub-band size for sub-band reporting mode expressed in units of physical {{units}}, see {{bibref|3GPP-TS.36.213|Section 7.2.2}}. This parameter corresponds to the K IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.K";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
+  }
+
+  grouping lte-ran-phy-pusch-g {
+    description
+      "This object contains parameters relating to the PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6}}).";
+    leaf nsb {
+      type uint8 {
+        range "1..4";
+      }
+      config false;
+      description
+        "Defines the number of sub-bands. This parameter corresponds to n-SB parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NSB parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.NSB";
+    }
+    leaf hopping-mode {
+      type enumeration {
+        enum "inter-sub-frame" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - InterSubFrame";
+        }
+        enum "intra-and-inter-sub-frame" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - IntraAndInterSubFrame";
+        }
+      }
+      config false;
+      description
+        "Indicates if hopping is \"inter-subframe\" or \"intra and inter-subframe\". Corresponds to hoppingMode parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Hopping-mode parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode";
+    }
+    leaf-list hopping-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a value to compute the set of physical resource blocks to be used for transmission on PUSCH if uplink frequency hopping mode is enabled, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. This parameter corresponds to pusch-HoppingOffset parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRBHO parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingOffset";
+    }
+    leaf enable64-qam {
+      type boolean;
+      description
+        "Indicates whether 64QAM is allowed or not. If {{true}}, 64QAM is allowed. If {{false}}, 64QAM is not allowed. Corresponds to enable64QAM parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.Enable64QAM";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
+  }
+
+  grouping lte-ran-phy-pusch-ulrs-g {
+    description
+      "This object contains parameters relating to the ULRS (Uplink Reference Signal) of PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6.1}}).";
+    leaf group-hopping-enabled {
+      type boolean;
+      config false;
+      description
+        "Indicates whether group hopping is enabled or not. If {{true}}, group hopping is enabled. If {{false}}, group hopping is not enabled. Corresponds to groupHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupHoppingEnabled";
+    }
+    leaf group-assignment-pusch {
+      type uint8 {
+        range "0..29";
+      }
+      description
+        "Corresponds to parameter groupAssignmentPUSCH specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupAssignmentPUSCH";
+    }
+    leaf sequence-hopping-enabled {
+      type boolean;
+      config false;
+      description
+        "Indicates whether sequence hopping is enabled or not. If {{true}}, sequence hopping is enabled. If {{false}}, sequence hopping is not enabled. Corresponds to sequenceHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.SequenceHoppingEnabled";
+    }
+    leaf cyclic-shift {
+      type uint8 {
+        range "0..7";
+      }
+      description
+        "Corresponds to parameter cyclcShift specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.CyclicShift";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
+  }
+
+  grouping lte-ran-phy-ul-power-control-g {
+    description
+      "This object contains parameters relating to the uplink power control configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.7}}).";
+    leaf-list p0-nominal-pusch {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUSCH for semi-persistant grants, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUSCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUSCH(0) parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUSCH";
+    }
+    leaf-list alpha {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a value used to compute the UL UE transmit power for transmission on PUSCH, from the list of 0, 4, 5, 6, 7, 8, 9, 100. In case there is more than one item in the list, the first item contains the most preferred value. Actual values of range are from 0.00 to 1.00. The value of {{param}} divided by 100 yields the actual value. Corresponds to alpha parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to α parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.Alpha";
+    }
+    leaf-list p0-nominal-pucch {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUCCH, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUCCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUCCH parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.2.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUCCH";
+    }
+    leaf delta-fpucch-format1 {
+      type int64;
+      units "dB";
+      description
+        "Defines deltaF-PUCCH-Format1 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1";
+    }
+    leaf delta-fpucch-format1b {
+      type uint8 {
+        range "1 | 3 | 5";
+      }
+      units "dB";
+      description
+        "Defines deltaF-PUCCH-Format1b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1b) in {{units}} dB as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1b";
+    }
+    leaf delta-fpucch-format2 {
+      type int64;
+      units "dB";
+      description
+        "Defines deltaF-PUCCH-Format2 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2";
+    }
+    leaf delta-fpucch-format2a {
+      type int64;
+      units "dB";
+      description
+        "Defines deltaF-PUCCH-Format2a to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2a) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2a";
+    }
+    leaf delta-fpucch-format2b {
+      type int64;
+      units "dB";
+      description
+        "Defines deltaF-PUCCH-Format2b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2b) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2b";
+    }
+    leaf delta-preamble-msg3 {
+      type int64;
+      units "dB";
+      description
+        "Defines the parameter in {{units}} used to compute the UL UE transmit power for transmission of random access response grant. This parameter corresponds to deltaPreambleMsg3 parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to ?PREAMBLE_Msg3 parameter specified in {{bibref|3GPP-TS.36.213|Section 5.1.1.1}}. Actual value is 2x the value of this parameter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaPreambleMsg3";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
+  }
+
+  grouping lte-ran-phy-mbsfn-g {
+    description
+      "This object contains parameters relating to the MBSFN (Multimedia Broadcast multicast service Single Frequency Network) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
+    leaf neigh-cell-config {
+      type uint8 {
+        range "0..3";
+      }
+      config false;
+      description
+        "Defines the information related to MBSFN and TDD UL/DL configuration of neighbour cells. Corresponds to NeighCellConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Value 0: Not all neighbour cells have the same MBSFN sub-frame allocation as serving cell. Value 1: No MBSFN sub-frames are present in all neighbour cells. Value 2: The MBSFN sub-frame allocations of all neighbour cells are identical to or subsets of that in the serving cell. Value 3: Different UL/DL allocation in neighbouring cells for TDD compared to the serving cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.NeighCellConfig";
+    }
+    leaf max-sf-config-list-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.MaxSFConfigListEntries";
+    }
+    leaf sf-config-list-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigListNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
+  }
+
+  grouping lte-ran-phy-mbsfn-sf-config-list-g {
+    description
+      "This object contains parameters relating to the sub-frame that are reserved for MBSFN (Multimedia Broadcast multicast service Single Frequency Network) in downlink direction. For FDD mode, only one entry can exist in this table. For TDD mode, at most one entry can exist with a given value of stratumID (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Alias";
+    }
+    leaf sync-stratum-id {
+      type uint8 {
+        range "1..8";
+      }
+      config false;
+      description
+        "This parameter is applicable to TDD mode only. Defines the synchronization stratum level to which the MBSFN configuration applies.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SyncStratumID";
+    }
+    leaf radio-frame-allocation-period {
+      type uint8 {
+        range "1..2 | 4 | 8 | 16 | 32";
+      }
+      description
+        "Defines the period where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param}}) = {{param|RadioframeAllocationOffset}}). The value of 1 and 2 are only meaningful when the value of {{param|RadioFrameAllocationSize}} parameter is 1. Corresponds to radioFrameAllocationPeriod IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationPeriod";
+    }
+    leaf radioframe-allocation-offset {
+      type uint8 {
+        range "0..7";
+      }
+      description
+        "Defines the offset where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param|RadioFrameAllocationPeriod}}) = {{param}}). Corresponds to radioFrameAllocationOffset IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioframeAllocationOffset";
+    }
+    leaf radio-frame-allocation-size {
+      type uint8 {
+        range "1 | 4";
+      }
+      description
+        "Defines the number of connsecutive frames that the MBSFN allocation pertains to defined by the combination of {{param|RadioFrameAllocationPeriod}} and {{param|RadioframeAllocationOffset}} parameters.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationSize";
+    }
+    leaf-list sub-frame-allocations {
+      type uint8 {
+        range "0 | 1";
+      }
+      config false;
+      max-elements "64";
+      description
+        "{{list}} The value of \"1\" indicates the position of sub-frames that is allocated to MBSFN within the radio frame. First item defines the MBSFN allocation for sub-frame #1, second item for #2, third item for #3, fourth item for #6, fifth item for #7, sixth item for #8. If the value of {{param|RadioFrameAllocationSize}} is 4, then this pattern repeats in the sequence of the four radio frames. The actual size of this parameter depends on the value of {{param|RadioFrameAllocationSize}} parameter. If the value of {{param|RadioFrameAllocationSize}} is 1, then the size of this parameter is 6; if the size {{param|RadioFrameAllocationSize}} is 4, then the size of this parameter is 24. Corresponds to subframeAllocation IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SubFrameAllocations";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
+  }
+
+  grouping lte-ran-phy-prs-g {
+    description
+      "This object contains parameters relating to the PRS (Positioning Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.9}}).";
+    leaf num-prs-resource-blocks {
+      type uint64;
+      units "Resource Blocks";
+      config false;
+      description
+        "Defines the number of RBs ({{units}}) used for PRS. Corresponds to the parameter NRBPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumPRSResourceBlocks";
+    }
+    leaf prs-configuration-index {
+      type uint16 {
+        range "0..4095";
+      }
+      config false;
+      description
+        "Corresponds to the PRS configuration index defined as parameter IPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3 and Table 6.10.4.3.-1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.PRSConfigurationIndex";
+    }
+    leaf num-consecutive-prs-subfames {
+      type uint8 {
+        range "1..2 | 4 | 6";
+      }
+      config false;
+      description
+        "Defines the number of consecutive positioning sub-frames. Corresponds to the parameter NPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumConsecutivePRSSubfames";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
+  }
+
+  grouping lte-ran-phy-tdd-frame-g {
+    description
+      "This object is applicable to TDD mode only. This object contains parameters relating to the TDD frame structure configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.10}}).";
+    leaf sub-frame-assignment {
+      type uint8 {
+        range "0..6";
+      }
+      config false;
+      description
+        "Defines the DL/UL sub-frame configuration. Corresponds to subframAssignment specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SubFrameAssignment";
+    }
+    leaf special-subframe-patterns {
+      type uint8 {
+        range "0..8";
+      }
+      config false;
+      description
+        "Defines the configuration of the special sub-frame that contains the guard period between the downlink and uplink transmissions. Corresponds to the specialSubframePatterns specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SpecialSubframePatterns";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
+  }
+
+  grouping lte-ran-mac-g {
+    description
+      "This object contains parameters relating to the MAC (Medium Access Control) configuration.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.";
+  }
+
+  grouping lte-ran-mac-rach-g {
+    description
+      "This object contains parameters relating to the RACH (Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.1}}).";
+    leaf-list number-of-ra-preambles {
+      type uint8 {
+        range "4..64";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a number of non-dedicated random access preambles. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter numberOfRA-Preambles specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.NumberOfRaPreambles";
+    }
+    leaf-list size-of-ra-group-a {
+      type uint8 {
+        range "4..60";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a number of non-dedicated random access preambles in Random Acces Preambles group A. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...60); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter sizeOfRA-PreamblesGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.SizeOfRaGroupA";
+    }
+    leaf-list message-size-group-a {
+      type uint16 {
+        range "56 | 144 | 208 | 256";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a threshold for preamble selection, specified in bits. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messageSizeGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessageSizeGroupA";
+    }
+    leaf-list message-power-offset-group-b {
+      type int64;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a threshold for preamble selection, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messagePowerOffsetGroupB specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. Value of -1 indicates \"minusinfinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessagePowerOffsetGroupB";
+    }
+    leaf-list power-ramping-step {
+      type uint8 {
+        range "0 | 2 | 4 | 6";
+      }
+      config false;
+      min-elements 1;
+      max-elements "16";
+      description
+        "{{list}} Each item is a power increase factor between subsequent random access preamble transmissions, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter powerRampingStep specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PowerRampingStep";
+    }
+    leaf-list preamble-initial-received-target-power {
+      type int64;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a value used as the baseline for computation for random access transmission power, specified in dBm. Also used as a parameter in the criteria for preamble selection. Only even values are valid (i.e. -120, -118, -116,...-90); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleInitialReceivedTargetPower specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. and section 5.1.3. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleInitialReceivedTargetPower";
+    }
+    leaf-list preamble-trans-max {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a maximum number of random access preamble transmissions, from the list of 3, 4, 5, 6, 7, 8, 10, 20, 50, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleTransMax specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4 and section 5.1.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleTransMax";
+    }
+    leaf-list response-window-size {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a duration of the random access response window, specified in sub-frames, with a numeric range between 2 and 10 inclusive (except value of 9). In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ra-ResponseWindowSize specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ResponseWindowSize";
+    }
+    leaf-list contention-resolution-timer {
+      type uint8 {
+        range "8..64";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a contention resolution timer, specified in sub-frames. Only values multiple of 8 are valid (i.e. 8, 16, 24,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter mac-ContentionResolutionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ContentionResolutionTimer";
+    }
+    leaf-list max-harq-msg3-tx {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a maximum number of Msg3 HARQ transmissions by RRC, with a numeric range between 1 and 8 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter maxHARQ-Msg3Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MaxHARQMsg3Tx";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
+  }
+
+  grouping lte-ran-mac-drx-g {
+    description
+      "This object contains parameters relating to the DRX (Discontinuous Reception) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.2}}).";
+    leaf drx-enabled {
+      type boolean;
+      config false;
+      description
+        "Specifies whether DRX operation is enabled or not. If {{true}}, DRX operation is enabled. If {{false}}, DRX operation is not enabled. Corresponds to drx-Configuration IE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXEnabled";
+    }
+    leaf-list on-duration-timer {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is the DRX cycle during which UE actively monitors PDCCH, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter onDurationTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.OnDurationTimer";
+    }
+    leaf-list drx-inactivity-timer {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item defines the number of inactive consecutive PDCCH sub-frame(s) that will activate short DRX cycle, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200, 300, 500, 750, 1280, 1920, 2560. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter drx-InactivityTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXInactivityTimer";
+    }
+    leaf-list drx-retransmission-timer {
+      type uint8 {
+        range "1 | 2 | 4 | 6 | 8 | 16 | 24 | 33";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item defines the maximum number of consecutive PDCCH sub-frame(s) UE MUST remain active expecting a DL retransmission, specified in number of PDCCH sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. The timer is started when a HARQ RTT Timer expires and the data in the soft buffer of the corresponding HARQ process was not successfully decoded. There is one timer for each active HARQ process. Corresponds to parameter drx-RetransmissionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXRetransmissionTimer";
+    }
+    leaf-list long-drx-cycle {
+      type uint16 {
+        range "10 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640 | 1024 | 1280 | 2048 | 2560";
+      }
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is long DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, this value MUST be a multiple of the {{param|ShortDRXCycle}} value. Corresponds to longDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}} and longDRX-CycleStartOffset specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.LongDRXCycle";
+    }
+    leaf-list drx-start-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "512";
+      description
+        "{{list}} Each item defines the starting frame of the DRX cycle within the long DRX cycle, with a numeric range between 0 and 2559 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The valid value range is dependent on {{param|LongDRXCycle}} parameter which defines the upper bound of this range, i.e., range definition is [0: ({{param|LongDRXCycle}}-1)]. Corresponds to drxStartOffset parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. Use of values bigger than ({{param|LongDRXCycle}}-1) MUST be rejected by the CPE. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXStartOffset";
+    }
+    leaf-list short-drx-cycle {
+      type uint16 {
+        range "2 | 5 | 8 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is the short DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, the value of {{param|LongDRXCycle}} MUST be a multiple of the {{param}} value. Corresponds to shortDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.ShortDRXCycle";
+    }
+    leaf-list drx-short-cycle-timer {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item defined the duration of the short DRX cycle in multiples of {{param|ShortDRXCycle}} parameter, specified in number of sub-frames, with a numeric range between 1 and 16 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Denotes the number of consecutive sub-frame(s)the UE shall follow the short DRX cycle after the DRX Inactivity Timer has expired. Corresponds to drxShortCycleTimer parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXShortCycleTimer";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
+  }
+
+  grouping lte-ran-mac-ulsch-g {
+    description
+      "This object contains parameters relating to the ULSCH (Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.3}}).";
+    leaf max-harq-tx {
+      type uint8 {
+        range "1..8 | 10 | 12 | 16 | 20 | 24 | 28";
+      }
+      description
+        "Maximum number of UL HARQ transmissions. Corresponds to parameter maxHARQ-Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.MaxHARQTx";
+    }
+    leaf periodic-bsr-timer {
+      type uint16 {
+        range "0 | 5 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 320 | 640 | 1280 | 2560";
+      }
+      units "subframes";
+      description
+        "Timer for Periodic BSR (Buffer Status Report) reporting, specified in number of {{units}}. UE transmits periodic BSR at the expiration of this timer. Corresponds to parameter periodicBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}. Value of 0 indicates \"infinity.\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.PeriodicBSRTimer";
+    }
+    leaf retx-bsr-timer {
+      type uint16 {
+        range "320 | 640 | 1280 | 2560 | 5120 | 10240";
+      }
+      units "subframes";
+      description
+        "Timer for Regular BSR reporting, specified in number of {{units}}. UE transmits a Regular BSR at the expiration of this timer if data is available in the buffer. Corresponds to parameter retxBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.RetxBSRTimer";
+    }
+    leaf tti-bundling {
+      type boolean;
+      description
+        "Enables/disables TTI bundling. If {{true}}, TTI bundling is enabled. If {{false}}, TTI bundling is disabled. Corresponds to parameter ttiBundling specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.TTIBundling";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
+  }
+
+  grouping lte-ran-rlc-g {
+    description
+      "This object contains parameters relating to the RLC (Radio Link Control) configuration.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.";
+  }
+
+  grouping lte-ran-rlc-srb1-g {
+    description
+      "This object contains parameters relating to the SRB1 (Signaling Radio Bearer 1) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
+    leaf default-configuration {
+      type boolean;
+      config false;
+      description
+        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.DefaultConfiguration";
+    }
+    leaf-list t-poll-retransmit {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TPollRetransmit";
+    }
+    leaf-list poll-pdu {
+      type uint16 {
+        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollPDU";
+    }
+    leaf-list poll-byte {
+      type uint16 {
+        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollByte";
+    }
+    leaf-list max-retx-threshold {
+      type uint8 {
+        range "1..4 | 6 | 8 | 16 | 32";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.MaxRetxThreshold";
+    }
+    leaf-list t-reordering {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TReordering";
+    }
+    leaf-list t-status-prohibit {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TStatusProhibit";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
+  }
+
+  grouping lte-ran-rlc-srb2-g {
+    description
+      "This object contains parameters relating to the SRB2 (Signaling Radio Bearer 2) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
+    leaf default-configuration {
+      type boolean;
+      config false;
+      description
+        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.DefaultConfiguration";
+    }
+    leaf-list t-poll-retransmit {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TPollRetransmit";
+    }
+    leaf-list poll-pdu {
+      type uint16 {
+        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollPDU";
+    }
+    leaf-list poll-byte {
+      type uint16 {
+        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollByte";
+    }
+    leaf-list max-retx-threshold {
+      type uint8 {
+        range "1..4 | 6 | 8 | 16 | 32";
+      }
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.MaxRetxThreshold";
+    }
+    leaf-list t-reordering {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TReordering";
+    }
+    leaf-list t-status-prohibit {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TStatusProhibit";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
+  }
+
+  grouping lte-ran-rrc-timers-g {
+    description
+      "This object contains parameters relating to the RRC timers and constants (see {{bibref|3GPP-TS.32.592|Section 6.1.6.1}}) and (see {{bibref|3GPP-TS.32.592|Section 6.1.6.2}}).";
+    leaf-list t300 {
+      type uint16 {
+        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t300 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T300";
+    }
+    leaf-list t301 {
+      type uint16 {
+        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionReestablishmentRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t301 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T301";
+    }
+    leaf t302 {
+      type uint16 {
+        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Time to wait in {{units}} for cell re-selection or RRConnectionSetup after RRCConnectionReject. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T302";
+    }
+    leaf-list t304-eutra {
+      type uint16 {
+        range "50 | 100 | 150 | 200 | 500 | 1000 | 2000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE MobilityControlInfo in RRCConnectionReconfiguration message in {{bibref|3GPP-TS.36.331|Section 5.3.5.4 and Section 6.3.4}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304EUTRA";
+    }
+    leaf-list t304-irat {
+      type uint16 {
+        range "100 | 200 | 500 | 1000 | 2000 | 4000 | 8000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE CellChangeOrder in MobilityFromEUTRACommand message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304IRAT";
+    }
+    leaf-list t310 {
+      type uint16 {
+        range "0 | 50 | 100 | 200 | 500 | 1000 | 2000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a RLF declaration timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t310 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T310";
+    }
+    leaf-list t311 {
+      type uint16 {
+        range "1000 | 3000 | 5000 | 10000 | 15000 | 20000 | 30000";
+      }
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a RLF recovery timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t311 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T311";
+    }
+    leaf t320 {
+      type uint8 {
+        range "5 | 10 | 20 | 30 | 60 | 120 | 180";
+      }
+      units "minutes";
+      config false;
+      description
+        "Time in {{units}} after RRCConnection Release in which cell re-selection priority info supplied in RRCConnectionRelease MUST be observed. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. Corresponds to parameter t320 specified in RRCConnectionRelease message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. S";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T320";
+    }
+    leaf n310 {
+      type uint8 {
+        range "1..4 | 6 | 8 | 10 | 20";
+      }
+      config false;
+      description
+        "Number of consecutive \"out-of-sync\" indications received from lower layers that triggers timer T310. Corresponds to parameter n310 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N310";
+    }
+    leaf n311 {
+      type uint8 {
+        range "1..6 | 8 | 10";
+      }
+      config false;
+      description
+        "Number of consecutive \"in-sync\" indications received from lower layers that stops timer T310. Corresponds to parameter n311 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N311";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
+  }
+
+  grouping lte-ran-cell-restriction-g {
+    description
+      "This object contains parameters relating to the cell restriction configuration.";
+    leaf cell-barred {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to parameter CellBarred specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellBarred";
+    }
+    leaf cell-reserved-for-operator-use {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the is reserved for operator's use or not. If {{true}}, the cell is reserved for operator use. If {{false}}, the cell is not reserved for operator use. Corresponds to parameter cellReservedForOperatorUse specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellReservedForOperatorUse";
+    }
+    leaf barring-for-emergency {
+      type boolean;
+      config false;
+      description
+        "Indicates whether the is barred for Access Class 10 or not. If {{true}}, the cell is barred for Access Class 10. If {{false}}, the cell is not barred for Access Class 10. Corresponds to parameter ac-BarringForEmergency specified in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.BarringForEmergency";
+    }    
+    leaf x-0005b9-mo-sig-barring-factor {
+      type uint8 {
+        range "0 | 5 | 10 | 15 | 20 | 25 | 30 | 40 | 50 | 60 | 70 | 75 | 80 | 85 | 90 | 95";
+      }
+      default "95";
+      config false;
+      description
+        "In R1.5, Data and Signalling barring factors must be identical. SystemInformationBlockType2. Other discrete values not allowed";
+      reference "BBF TR-196 2.0.3 full -Device.Services.FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.X_0005B9_MOSigBarringFactor";
+    }      
+    leaf x-0005b9-mo-sig-barring-time {
+      type uint16 {
+        range "4 | 8 | 16 | 32 | 64 | 128 | 256 | 512";
+      }
+      default "4";
+      config false;
+      description
+        "In R1.5, Data and Signalling barring time are identical. In seconds. Other values not allowed.";
+      reference "BBF TR-196 2.0.3 full -Device.Services.FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.X_0005B9_MOSigBarringTime";
+    }  
+    leaf x-0005b9-mo-sig-barring-for-special-ac  {
+      type string {
+        length "8";
+      }
+      default "00000---";
+      config false;
+      description
+        "In R1.5, Data and Signalling special AC params are identical. Most significant 3 bits are ignored no matter the value they contain. Each of the following 5 bits can be set to '0' or '1' in any combination. '0' indicates that the specific special access class is NOT barred. ";
+      reference "BBF TR-196 2.0.3 full -Device.Services.FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.X_0005B9_MOSigBarringForSpecialAC ";
+    }     
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
+  }
+
+  grouping lte-ran-mobility-g {
+    description
+      "This object contains parameters relating to the UE's mobility configuration. It covers both idle mode and connected mode.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-g {
+    description
+      "This object contains parameters relating to the UE's mobility while it is in idle mode (cell (re-)selection). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-common-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration that is common to all cell re-selection scenarios (intra/inter-freq, inter-RAT to UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.1}}).";
+    leaf-list qhyst {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a hysteresis value applied to serving cell for evaluating cell ranking criteria specified in dB, with a numeric range between 0 and 24 inclusive. For the value greater than 6, only even numbers are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-Hyst specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.Qhyst";
+    }
+    leaf q-hyst-sf-medium {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Speed-dependent scaling factor for Qhyst in Medium-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFMedium";
+    }
+    leaf q-hyst-sf-high {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Speed-dependent scaling factor for Qhyst in High-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFHigh";
+    }
+    leaf t-evaluation {
+      type uint8 {
+        range "30 | 60 | 120 | 180 | 240";
+      }
+      units "seconds";
+      config false;
+      description
+        "Duration for evaluating allowed amount of cell re-selection(s) required to enter mobility states, specified in {{units}}. Corresponds to parameter t-Evaluation specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmax specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.TEvaluation";
+    }
+    leaf t-hyst-normal {
+      type uint8 {
+        range "30 | 60 | 120 | 180 | 240";
+      }
+      units "seconds";
+      config false;
+      description
+        "Additional duration for evaluating criteria to enter normal mobility state, specified in {{units}}. Specifies the additional time period for evaluating criteria to enter Normal-mobility state. Corresponds to parameter t-HystNormal specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmaxHyst specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.THystNormal";
+    }
+    leaf n-cell-change-medium {
+      type uint8 {
+        range "1..16";
+      }
+      config false;
+      description
+        "Defines the number of cell re-selections within TEvaluation to enter Medium-mobility state. Corresponds to parameter n-cellChangeMedium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_M specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeMedium";
+    }
+    leaf n-cell-change-high {
+      type uint8 {
+        range "1..16";
+      }
+      config false;
+      description
+        "Defines the number of cell re-selections within TEvaluation to enter High-mobility state. Corresponds to parameter n-cellChangeHigh specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_H specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeHigh";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-intra-freq-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration for intra-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.2}}).";
+    leaf-list q-rx-lev-min-sib1 {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a required minimum received RSRP level of a E-UTRA cell for cell selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB1";
+    }
+    leaf-list q-rx-lev-min-sib3 {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a required minimum received RSRP level for intra-frequency E-UTRA cell re-selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB3";
+    }
+    leaf q-rx-lev-min-offset {
+      type uint8 {
+        range "1..8";
+      }
+      units "dBm";
+      config false;
+      description
+        "Defines offset with respect to QrxLevMin, specified in {{units}}. This offset is taken into account in the computation of Srxlev for cell selection evaluation of cells detected during a periodic search for a higher priority PLMN while camped normally in a VPLMN. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMinOffset in SIB1 specified in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinOffset";
+    }
+    leaf-list s-intra-search {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a threshold for intra-frequency measurements, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-IntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SIntraSearch";
+    }
+    leaf-list t-reselection-eutra {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a cell re-selection timer for intra-frequency E-UTRA cell re-selection, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRA";
+    }
+    leaf-list s-non-intra-search {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a threshold for inter-frequency and inter-RAT measurements with lower or equal priority, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-NonIntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SNonIntraSearch";
+    }
+    leaf cell-reselection-priority {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Absolute priority of the E-UTRAN serving carrier frequency used in the inter-frequency and inter-RAT cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.CellReselectionPriority";
+    }
+    leaf p-max {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Used to limit the allowed UE uplink transmission power on the serving frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB1 and SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1 and Section 6.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.PMax";
+    }
+    leaf thresh-serving-low {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold for serving frequency used in evaluation of re-selection towards lower priority E-UTRAN frequency or inter-RAT, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshServingLow specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.ThreshServingLow";
+    }
+    leaf t-reselection-eutrasf-medium {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for intra-frequency TreselectionEUTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFMedium";
+    }
+    leaf t-reselection-eutrasf-high {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for intra-frequency TreselectionEUTRA in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFHigh";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-inter-freq-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration for inter-freq re-selection scenario .";
+    leaf max-carrier-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.MaxCarrierEntries";
+    }
+    leaf carrier-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.CarrierNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-inter-freq-carrier-g {
+    description
+      "This object contains parameters relating to the carrier information for inter-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.3}}).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Alias";
+    }
+    leaf eutra-carrier-arfcn {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Indicates the ARFCN of this frequency carrier. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.EUTRACarrierARFCN";
+    }
+    leaf-list q-rx-lev-min-sib5 {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a required minimum received RSRP level on this E-UTRA frequency carrier, spcified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QRxLevMinSIB5";
+    }
+    leaf-list q-offset-freq {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is an offset applicable between serving and this frequency carrier, specified in dBm, with a numeric range between -24 and 24 inclusive. For values less than or equal to -6, or values greater than or equal to 6, only the even values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-OffsetFreq in SIB5 specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.4.2.6}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QOffsetFreq";
+    }
+    leaf-list t-reselection-eutra {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a cell re-selection timer for inter-frequency cell re-selection to this E-UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRA";
+    }
+    leaf cell-reselection-priority {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Absolute priority of this E-UTRA frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.CellReselectionPriority";
+    }
+    leaf thresh-x-high {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting from a lower priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXHigh";
+    }
+    leaf thresh-x-low {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting from a higher priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXLow";
+    }
+    leaf p-max {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Used to limit the allowed UE uplink transmission power on this carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.PMax";
+    }
+    leaf t-reselection-eutrasf-medium {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFMedium";
+    }
+    leaf t-reselection-eutrasf-high {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFHigh";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection scenario.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-utra-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to UTRA (UMTS) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.4}}).";
+    leaf-list t-reselection-utra {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a cell re-selection timer for re-selection to a UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRA";
+    }
+    leaf t-reselection-utrasf-medium {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TreselectionUTRA for inter-RAT re-selection to UTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-Medium specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFMedium";
+    }
+    leaf t-reselection-utrasf-high {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFHigh";
+    }
+    leaf max-utranfdd-freq-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.MaxUTRANFDDFreqEntries";
+    }
+    leaf utranfdd-freq-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreqNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g {
+    description
+      "This object contains parameters relating to the channel frequncy related information of UTRA (UMTS) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.5, 6.1.5.1.6}}).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Alias";
+    }
+    leaf utra-carrier-arfcn {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "Indicates the ARFCN of the frequency carrier. Corresponds to parameter CarrierFreq in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.UTRACarrierARFCN";
+    }
+    leaf-list q-rx-lev-min {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a required minimum received RSCP level on this UTRA frequency carrier, specified in dBm, with a numeric range between -60 and -13 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 + 1) yields the actual value. Corresponds to parameter q-RxLevMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QRxLevMin";
+    }
+    leaf-list q-qual-min {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a required minimum received Ec/Io level on this UTRA FDD carrier, specified in dB, with a numeric range between -24 and 0 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-QualMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QQualMin";
+    }
+    leaf cell-reselection-priority {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Absolute priority of this UTRA FDD frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.CellReselectionPriority";
+    }
+    leaf thresh-x-high {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting towards a higher priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXHigh";
+    }
+    leaf thresh-x-low {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting towards a lower priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXLow";
+    }
+    leaf p-max-utra {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Used to limit the allowed UE uplink transmission power on this UTRA FDD carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. Corresponds to parameter p-MaxUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.PMaxUTRA";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-geran-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to GERAN (GSM) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.6}}).";
+    leaf-list t-reselection-geran {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a cell re-selection timer for re-selection to a GERAN frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionGERAN specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionGERA in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERAN";
+    }
+    leaf t-reselection-geransf-medium {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-Medium specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFMedium";
+    }
+    leaf t-reselection-geransf-high {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFHigh";
+    }
+    leaf max-geran-freq-group-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.MaxGERANFreqGroupEntries";
+    }
+    leaf geran-freq-group-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroupNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g {
+    description
+      "This object contains parameters relating to the channel frequncy related information of GERAN (GSM) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.7}}).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Alias";
+    }
+    leaf band-indicator {
+      type enumeration {
+        enum "gsm850" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM850";
+        }
+        enum "gsm900" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM900";
+        }
+        enum "dcs1800" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - DCS1800";
+        }
+        enum "pcs1900" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - PCS1900";
+        }
+      }
+      config false;
+      description
+        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator";
+    }
+    leaf bccharfcn {
+      type uint16 {
+        range "0..1023";
+      }
+      description
+        "ARFCN of this cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BCCHARFCN";
+    }
+    leaf-list q-rx-lev-min {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is a required minimum received RSSI level on this GERAN frequency carrier for re-selection to this UTRA FDD carrier, specified in dBm, with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 - 115) yields the actual value. Corresponds to parameter q-rxLevMin in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to RXLEV_ACCESS_MIN in {{bibref|3GPP-TS.45.008}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.QRxLevMin";
+    }
+    leaf cell-reselection-priority {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Absolute priority of this GERAN frequency group, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.CellReselectionPriority";
+    }
+    leaf thresh-x-high {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting towards a higher priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXHigh";
+    }
+    leaf thresh-x-low {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting towards a lower priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}} dB. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXLow";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-cdma2000-g {
+    description
+      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to CDMA2000 system scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
+    leaf-list search-window-size {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a CDMA2000 parameter affecting the search for neighbouring pilots, with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter searchWindowSize in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP2-C.S0005-A|Table 2.6.6.2.1-1}} and {{bibref|3GPP2-C.S0024-A|Table 8.7.6.2-4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.SearchWindowSize";
+    }
+    leaf-list t-reselection-cdma2000 {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "32";
+      description
+        "{{list}} Each item is a cell re-selection timer for a CDMA2000 band, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionCDMA2000 specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionCDMA_HRPD or TreselectionCDMA_1xRTT in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000";
+    }
+    leaf t-reselection-cdma2000-sf-medium {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-Medium specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFMedium";
+    }
+    leaf t-reselection-cdma2000-sf-high {
+      type uint8 {
+        range "25 | 50 | 75 | 100";
+      }
+      config false;
+      description
+        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFHigh";
+    }
+    leaf max-cdma2000-band-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.MaxCDMA2000BandEntries";
+    }
+    leaf cdma2000-band-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000BandNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
+  }
+
+  grouping lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g {
+    description
+      "This object contains parameters relating to the channel frequncy related information of CDMA2000 system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Alias";
+    }
+    leaf band-class {
+      type uint8 {
+        range "0..17";
+      }
+      units "bandclass number";
+      description
+        "Defines the CDMA2000 band in which the CDMA2000 carrier frequency can be found, specified in {{units}}. BandClass is defined in 3GPP2 C.S0057-B Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.BandClass";
+    }
+    leaf cell-reselection-priority {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Absolute priority of this CDMA2000 band used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.CellReselectionPriority";
+    }
+    leaf thresh-x-high {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting towards a higher priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXHigh";
+    }
+    leaf thresh-x-low {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "Threshold used when re-selecting towards a lower priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXLow";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
+  }
+
+  grouping lte-ran-mobility-conn-mode-g {
+    description
+      "This object contains parameters relating to the UE's mobility while it is in connected mode (handover). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
+  }
+
+  grouping lte-ran-mobility-conn-mode-eutra-g {
+    description
+      "This object contains parameters relating to the connected mode mobility (handover) configuration within LTE system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.1}}).";
+    leaf-list filter-coefficient-rsrp {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a filtering coefficient used for RSRP measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRP parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRP";
+    }
+    leaf-list filter-coefficient-rsrq {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a filtering coefficient used for RSRQ measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRQ parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRQ";
+    }
+    leaf a1-threshold-rsrp {
+      type uint8 {
+        range "0..97";
+      }
+      config false;
+      description
+        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a1-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRP";
+    }
+    leaf a1-threshold-rsrq {
+      type uint8 {
+        range "0..34";
+      }
+      config false;
+      description
+        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in 3GPP TS 36.133}} table 9.1.7-1. Corresponds to parameter a1-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRQ";
+    }
+    leaf a2-threshold-rsrp {
+      type uint8 {
+        range "0..97";
+      }
+      config false;
+      description
+        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a2-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRP";
+    }
+    leaf a2-threshold-rsrq {
+      type uint8 {
+        range "0..34";
+      }
+      config false;
+      description
+        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.7-1}}. Corresponds to parameter a2-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRQ";
+    }
+    leaf-list a3-offset {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "256";
+      description
+        "{{list}} Each item is an offset to be used in evaluation of EUTRA measurement report triggering condition for event A3, with a numeric range between -30 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a3-Offset specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A3Offset";
+    }
+    leaf report-on-leave {
+      type boolean;
+      config false;
+      description
+        "Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving condition is met for event A3 for a cell in cellsTriggeredList, as specified in {{bibref|3GPP-TS.36.331|Section 5.5.4.1 and Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportOnLeave";
+    }
+    leaf a4-threshold-rsrp {
+      type uint8 {
+        range "0..97";
+      }
+      config false;
+      description
+        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRP";
+    }
+    leaf a4-threshold-rsrq {
+      type uint8 {
+        range "0..34";
+      }
+      config false;
+      description
+        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRQ";
+    }
+    leaf a5-threshold1-rsrp {
+      type uint8 {
+        range "0..97";
+      }
+      config false;
+      description
+        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRP";
+    }
+    leaf a5-threshold1-rsrq {
+      type uint8 {
+        range "0..34";
+      }
+      config false;
+      description
+        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRQ";
+    }
+    leaf a5-threshold2-rsrp {
+      type uint8 {
+        range "0..97";
+      }
+      config false;
+      description
+        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRP";
+    }
+    leaf a5-threshold2-rsrq {
+      type uint8 {
+        range "0..34";
+      }
+      config false;
+      description
+        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRQ";
+    }
+    leaf-list hysteresis {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a hysteresis value applied to entry and leave condition of a report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.Hysteresis";
+    }
+    leaf-list time-to-trigger {
+      type uint16 {
+        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
+      }
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a time period during which measurement report triggering condition needs to be met in order to trigger a measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter timeToTrigger specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TimeToTrigger";
+    }
+    leaf trigger-quantity {
+      type enumeration {
+        enum "rsrp" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRP";
+        }
+        enum "rsrq" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRQ";
+        }
+      }
+      config false;
+      description
+        "Quantities used to evaluate a measurement report triggering condition. Corresponds to parameter triggerQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity";
+    }
+    leaf report-quantity {
+      type enumeration {
+        enum "same-as-trigger-quantity" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - SameAsTriggerQuantity";
+        }
+        enum "both" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - Both";
+        }
+      }
+      config false;
+      description
+        "Measrument quantities to be included in the measurement report. Corresponds to parameter reportQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The value {{enum|Both}} specifies that both the RSRP and RSRQ quantities are to be included in the measurement report.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity";
+    }
+    leaf max-report-cells {
+      type uint8 {
+        range "1..8";
+      }
+      description
+        "Maximum number of cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.MaxReportCells";
+    }
+    leaf report-interval {
+      type uint32 {
+        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Interval between successive measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportInterval";
+    }
+    leaf report-amount {
+      type uint8 {
+        range "0..2 | 4 | 8 | 16 | 32 | 64";
+      }
+      config false;
+      description
+        "Number of times a measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportAmount";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
+  }
+
+  grouping lte-ran-mobility-conn-mode-irat-g {
+    description
+      "This object contains parameters relating to the connected mode mobility (handover) configuration that is common to all inter-RAT handover scenarios (UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.2}}).";
+    leaf-list qoffsett-utra {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a UTRA-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectUTRA specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsettUTRA";
+    }
+    leaf-list filter-coefficient-utra {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a filtering coefficient used for UTRA measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientUTRA";
+    }
+    leaf meas-quantity-utrafdd {
+      type enumeration {
+        enum "cpich-rscp" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-RSCP";
+        }
+        enum "cpich-ec-n0" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-EcN0";
+        }
+      }
+      config false;
+      description
+        "Measurement quantity used for UTRA measurements. Corresponds to measQuantityUTRA-FDD parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD";
+    }
+    leaf b1-threshold-utrarscp {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "RSCP threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRARSCP";
+    }
+    leaf b1-threshold-utra-ec-n0 {
+      type uint8 {
+        range "0..49";
+      }
+      units "dBm";
+      config false;
+      description
+        "EcNo threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRAEcN0";
+    }
+    leaf-list qoffset-geran {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a GERAN-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectGERAN specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetGERAN";
+    }
+    leaf-list filter-coefficient-geran {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "64";
+      description
+        "{{list}} Each item is a filtering coefficient used for GERAN measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigGERAN IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientGERAN";
+    }
+    leaf b1-threshold-geran {
+      type uint8 {
+        range "0..63";
+      }
+      units "dBm";
+      config false;
+      description
+        "Threshold to be used in GERAN measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b1-ThresholdGERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdGERAN";
+    }
+    leaf-list qoffset-cdma2000 {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a CDMA2000-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectCDMA2000 specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetCDMA2000";
+    }
+    leaf meas-quantity-cdma2000 {
+      type enumeration {
+        enum "pilot-strength" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotStrength";
+        }
+        enum "pilot-pn-phase-and-pilot-strength" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotPnPhaseAndPilotStrength";
+        }
+      }
+      config false;
+      description
+        "Measurement quantity used for CDMA2000 measurements. Corresponds to measQuantityCDMA2000 parameter specified in QuantityConfigCDMA2000 IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000";
+    }
+    leaf b1-threshold-cdma2000 {
+      type uint8 {
+        range "0..63";
+      }
+      units "dBm";
+      config false;
+      description
+        "Threshold to be used in CDMA2000 measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.45.008}}. Corresponds to parameter b1-ThresholdCDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdCDMA2000";
+    }
+    leaf b2-threshold2-utrarscp {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "RSCP threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRARSCP";
+    }
+    leaf b2-threshold2-utra-ec-n0 {
+      type uint8 {
+        range "0..49";
+      }
+      units "dBm";
+      config false;
+      description
+        "EcNo threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRAEcN0";
+    }
+    leaf b2-threshold2-geran {
+      type uint8 {
+        range "0..63";
+      }
+      units "dBm";
+      config false;
+      description
+        "Threshold to be used in GERAN measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2GERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2GERAN";
+    }
+    leaf b2-threshold2-cdma2000 {
+      type uint8 {
+        range "0..63";
+      }
+      units "dBm";
+      config false;
+      description
+        "Threshold to be used in CDMA2000 measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2CDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2CDMA2000";
+    }
+    leaf-list hysteresis {
+      type string;
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a hysteresis value applied to entry and leave condition of an IRAT report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.Hysteresis";
+    }
+    leaf-list time-to-trigger {
+      type uint16 {
+        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
+      }
+      config false;
+      min-elements 1;
+      max-elements "128";
+      description
+        "{{list}} Each item is a time period during which IRAT measurement report triggering condition needs to be met in order to trigger IRAT measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value.. Corresponds to parameter timeToTrigger specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.TimeToTrigger";
+    }
+    leaf max-report-cells {
+      type uint8 {
+        range "1..8";
+      }
+      description
+        "Maximum number of IRAT cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MaxReportCells";
+    }
+    leaf report-interval {
+      type uint32 {
+        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Interval between successive IRAT measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportInterval";
+    }
+    leaf report-amount {
+      type uint8 {
+        range "0..2 | 4 | 8 | 16 | 32 | 64";
+      }
+      config false;
+      description
+        "Number of times an IRAT measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportAmount";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
+  }
+
+  grouping lte-ran-neighbor-list-g {
+    description
+      "This object contains parameters relating to the neighbor list.";
+    leaf max-lte-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.MaxLTECellEntries";
+    }
+    leaf lte-cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECellNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
+  }
+
+  grouping lte-ran-neighbor-list-lte-cell-g {
+    description
+      "Table containing the E-UTRA (i.e. intra-RAT) cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.MustInclude";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PLMNID";
+    }
+    leaf cid {
+      type uint32 {
+        range "0..268435455";
+      }
+      description
+        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CID";
+    }
+    leaf eutra-carrier-arfcn {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.EUTRACarrierARFCN";
+    }
+    leaf phy-cell-id {
+      type uint16 {
+        range "0..503";
+      }
+      config false;
+      description
+        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PhyCellID";
+    }
+    leaf q-offset {
+      type int64;
+      config false;
+      description
+        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.QOffset";
+    }
+    leaf cio {
+      type int64;
+      config false;
+      description
+        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CIO";
+    }
+    leaf rs-tx-power {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.RSTxPower";
+    }
+    leaf blacklisted {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Blacklisted";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-inter-rat-cell-g {
+    description
+      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
+    leaf max-umts-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxUMTSEntries";
+    }
+    leaf max-gsm-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxGSMEntries";
+    }
+    leaf max-cdma2000-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 bandclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxCDMA2000Entries";
+    }
+    leaf umts-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTSNumberOfEntries";
+    }
+    leaf gsm-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
+    }
+    leaf cdma2000-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000NumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
+  }
+
+  grouping lte-ran-neighbor-list-inter-rat-cell-umts-g {
+    description
+      "Table containing the inter-RAT cell list for UTRA (UMTS) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.MustInclude";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PLMNID";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RNCID";
+    }
+    leaf cid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.CID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65533 | 65535";
+      }
+      config false;
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RAC";
+    }
+    leaf ura {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.URA";
+    }
+    leaf uarfcnul {
+      type uint16 {
+        range "0..16383";
+      }
+      config false;
+      description
+        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNUL";
+    }
+    leaf uarfcndl {
+      type uint16 {
+        range "0..16383";
+      }
+      config false;
+      description
+        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNDL";
+    }
+    leaf pcpich-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      config false;
+      description
+        "Primary CPICH scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
+    }
+    leaf pcpich-tx-power {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHTxPower";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-inter-rat-cell-gsm-g {
+    description
+      "Table containing the inter-RAT cell list for GERAN (GSM) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
+    }
+    leaf lac {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
+    }
+    leaf bsic {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
+    }
+    leaf ci {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
+    }
+    leaf band-indicator {
+      type enumeration {
+        enum "gsm850" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM850";
+        }
+        enum "gsm900" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM900";
+        }
+        enum "dcs1800" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
+        }
+        enum "pcs1900" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
+        }
+      }
+      config false;
+      description
+        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
+    }
+    leaf bccharfcn {
+      type uint16 {
+        range "0..1023";
+      }
+      config false;
+      description
+        "ARFCN of this cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-inter-rat-cell-cdma2000-g {
+    description
+      "Table containing the inter-RAT cell list for CDMA2000 provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables this entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Alias";
+    }
+    leaf must-include {
+      type boolean;
+      config false;
+      description
+        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.MustInclude";
+    }
+    leaf band-class {
+      type uint8 {
+        range "0..17";
+      }
+      config false;
+      description
+        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B}} Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.BandClass";
+    }
+    leaf arfcn {
+      type uint16 {
+        range "0..2047";
+      }
+      config false;
+      description
+        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.ARFCN";
+    }
+    leaf pn-offset {
+      type uint16 {
+        range "0..511";
+      }
+      config false;
+      description
+        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.PNOffset";
+    }
+    leaf type {
+      type enumeration {
+        enum "1x-rtt" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
+        }
+        enum "hrpd" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - HRPD";
+        }
+      }
+      config false;
+      description
+        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type";
+    }
+    leaf cid {
+      type string {
+        length "0..16";
+      }
+      description
+        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.CID";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-in-use-g {
+    description
+      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.LTE.RAN.NeighborList.}} configuration of adding and excluding cells.";
+    leaf max-lte-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.MaxLTECellEntries";
+    }
+    leaf lte-cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECellNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
+  }
+
+  grouping lte-ran-neighbor-list-in-use-lte-cell-g {
+    description
+      "Table containing the LTE EUTRA (i.e. intra-RAT) cell list.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PLMNID";
+    }
+    leaf cid {
+      type uint32 {
+        range "0..268435455";
+      }
+      description
+        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CID";
+    }
+    leaf eutra-carrier-arfcn {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.EUTRACarrierARFCN";
+    }
+    leaf phy-cell-id {
+      type uint16 {
+        range "0..503";
+      }
+      description
+        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PhyCellID";
+    }
+    leaf q-offset {
+      type int64;
+      description
+        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.QOffset";
+    }
+    leaf cio {
+      type int64;
+      description
+        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CIO";
+    }
+    leaf rs-tx-power {
+      type int64;
+      units "dBm";
+      description
+        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.RSTxPower";
+    }
+    leaf blacklisted {
+      type boolean;
+      description
+        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.Blacklisted";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-g {
+    description
+      "Table containing the inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
+    leaf max-umts-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxUMTSEntries";
+    }
+    leaf max-gsm-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
+    }
+    leaf max-cdma2000-entries {
+      type uint64;
+      description
+        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 banclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxCDMA2000Entries";
+    }
+    leaf umts-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTSNumberOfEntries";
+    }
+    leaf gsm-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
+    }
+    leaf cdma2000-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000NumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
+  }
+
+  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g {
+    description
+      "Table containing the inter-RAT cell list for UTRA (UMTS) cell.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PLMNID";
+    }
+    leaf rncid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RNCID";
+    }
+    leaf cid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.CID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65533 | 65535";
+      }
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RAC";
+    }
+    leaf ura {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.URA";
+    }
+    leaf uarfcnul {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNUL";
+    }
+    leaf uarfcndl {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNDL";
+    }
+    leaf pcpich-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Primary CPICH scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
+    }
+    leaf pcpich-tx-power {
+      type int64;
+      units "dBm";
+      description
+        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHTxPower";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
+    description
+      "Table containing the inter-RAT cell list for GERAN (GSM) cell.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
+    }
+    leaf lac {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
+    }
+    leaf bsic {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
+    }
+    leaf ci {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
+    }
+    leaf band-indicator {
+      type enumeration {
+        enum "gsm850" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM850";
+        }
+        enum "gsm900" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM900";
+        }
+        enum "dcs1800" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
+        }
+        enum "pcs1900" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
+        }
+      }
+      description
+        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
+    }
+    leaf bccharfcn {
+      type uint16 {
+        range "0..1023";
+      }
+      description
+        "ARFCN of this cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
+  }
+
+  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g {
+    description
+      "Table containing the inter-RAT cell list for CDMA2000 cell.";
+    leaf band-class {
+      type uint8 {
+        range "0..17";
+      }
+      description
+        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B|Table 1.5-1}}. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.BandClass";
+    }
+    leaf arfcn {
+      type uint16 {
+        range "0..2047";
+      }
+      description
+        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.ARFCN";
+    }
+    leaf pn-offset {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.PNOffset";
+    }
+    leaf type {
+      type enumeration {
+        enum "1x-rtt" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
+        }
+        enum "hrpd" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - HRPD";
+        }
+      }
+      description
+        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type";
+    }
+    leaf cid {
+      type string {
+        length "0..16";
+      }
+      description
+        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.CID";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
+  }
+
+  grouping cdma2000-g {
+    description
+      "This object contains parameters relating to configuring the CDMA2000 FAP.";
+    leaf tunnel-instance {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "This is the reference to the IPsec tunnel instance used by the CDMA2000 FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.TunnelInstance";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.";
+  }
+
+  grouping cdma2000-one-x-g {
+    description
+      "This object contains parameters relating to configuring the CDMA2000 1x FAP.";
+    leaf pcfpdsn-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSNNumberOfEntries";
+    }
+    leaf max-batch-pcfpdsn-entries {
+      type uint64;
+      description
+        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.MaxBatchPCFPDSNEntries";
+    }
+    leaf batch-pcfpdsn-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSNNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.";
+  }
+
+  grouping cdma2000-one-x-ran-g {
+    description
+      "This object contains parameters relating to RAN configuring the CDMA2000 1x FAP.";
+    leaf one-x-sector-nid {
+      type int64;
+      config false;
+      description
+        "SID for 1x. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorNID";
+    }
+    leaf one-x-sector-sid {
+      type int64;
+      config false;
+      description
+        "NID for 1x . See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorSID";
+    }
+    leaf one-xpzid {
+      type int64;
+      config false;
+      description
+        "packet Zone ID for 1x packet calls";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXPZID";
+    }
+    leaf base-id {
+      type int64;
+      config false;
+      description
+        "Base station ID (needed in SPM). This is also the CellID. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.BaseID";
+    }
+    leaf max-neighbor-list-entries {
+      type uint64;
+      description
+        "Maximum number of entries avaiable in {{object|.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.MaxNeighborListEntries";
+    }
+    leaf neighbor-list-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborListNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
+  }
+
+  grouping cdma2000-one-x-ran-rf-g {
+    description
+      "This object contains parameters relating to RF configuration of the FAP.";
+    leaf-list rfcnfl {
+      type string {
+        length "0..256";
+      }
+      config false;
+      min-elements 1;
+      description
+        "{{list}} Each item is a pair of 2-digit Band class number (as defined in {{bibref|3GPP2-C.S0057}}) followed by 4-digit FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCN is controlled by {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}}. If the FAP's self-configuration capability for RFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for RFCNFLInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. An example value is \"010001, 030500\". If multiple items are specified, they are done in the order of preference.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL";
+    }
+    leaf rfcnfl-band-in-use {
+      type string {
+        length "0..16";
+      }
+      description
+        "The FL Band being used by the FAP. Self-configuration for Band and RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first band class value in RFCNFL.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLBandInUse";
+    }
+    leaf rfcnfl-in-use {
+      type uint64;
+      description
+        "The FL RFCN being used by the FAP. Self-configuration for RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first RFCN value in RFCNFL.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLInUse";
+    }
+    leaf-list pilot-pn {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "{{list}} Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for PilotPNInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offset values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN";
+    }
+    leaf pilot-pn-in-use {
+      type uint16 {
+        range "0..511";
+      }
+      units "64 PN chips";
+      description
+        "The Pilot PN Offset being used by the FAP in {{units}}. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in PilotPN. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in PilotPN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPNInUse";
+    }
+    leaf maxfap-tx-power {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Defines the maximum transmission power allowed on the FAP. MaxFAPTxPower is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>;..<Pmax_high>;\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low>; and <Pmax_high>; are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower";
+    }
+    leaf maxfap-tx-power-in-use {
+      type int64;
+      units "0.1 dBm";
+      description
+        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPowerInUse";
+    }
+    leaf pch-pwr-percentage {
+      type uint32 {
+        range "1000..1000000";
+      }
+      units "0.001 percent";
+      config false;
+      description
+        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PchPwrPercentage";
+    }
+    leaf pilot-pwr-percentage {
+      type uint32 {
+        range "1000..1000000";
+      }
+      units "0.001 percent";
+      config false;
+      description
+        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.95% of total.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPwrPercentage";
+    }
+    leaf sync-pwr-percentage {
+      type uint32 {
+        range "1000..1000000";
+      }
+      units "0.001 percent";
+      config false;
+      description
+        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.4% of the max sector power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.SyncPwrPercentage";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
+  }
+
+  grouping cdma2000-one-x-ran-network-listen-mode-config-g {
+    description
+      "This object contains parameters relating to self-configuration of the MaxFAPTxPower of the FAP.";
+    leaf rfcnfl-margin {
+      type uint64;
+      config false;
+      description
+        "If self-configuration of RFCNFL is enabled, this value indicates the total received signal strength margin to be applied to the entries in RFCNFL when the FAP decides on the RFCNInUse in order to bias the selection of the most preferred frequency.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLMargin";
+    }
+    leaf fap-coverage-target {
+      type string {
+        length "0..32";
+      }
+      config false;
+      description
+        "Defines the target value measured in dB for the range of the FAP's FL coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<FAPCoverageTarget_min>..<FAPCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. <FAPCoverageTarget_min> and <FAPCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPCoverageTarget";
+    }
+    leaf fap-beacon-coverage-target {
+      type string {
+        length "0..32";
+      }
+      config false;
+      description
+        "Defines the target value measured in dB for the range of the FAP's FL Beacon coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive beacon transmit power levels. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<BeaconCoverageTarget_min>..<BeaconCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels for the beacon(s) in the presence of co-channel and adjacent channel interference.\" <BeaconCoverageTarget_min> and <BeaconCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPBeaconCoverageTarget";
+    }
+    leaf max-coverage-edge-pilot-strength {
+      type int64;
+      units "0.1 dB";
+      config false;
+      description
+        "The maximum strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) desired for FAP users at the edge of the FAP coverage target in units of {{units}}. This value can be used by the FAP's self configuration algorithms to help prevent aggressive transmit power level settings .";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxCoverageEdgePilotStrength";
+    }
+    leaf max-allowable-pilot-strength-degradation {
+      type int64;
+      units "0.1 dB";
+      config false;
+      description
+        "The maximum amount in dB by which the strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) for alien users can be degraded in the presence of FAP interference at the edge of FAP coverage, in {{units}} units.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxAllowablePilotStrengthDegradation";
+    }
+    leaf-list rfcnfl-to-protect {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "{{list}} Each item is a FL RFCN corresponding to a CDMA2000 carrier that is adjacent to the RFCNFLInUse to be protected from adjacent channel interference. If any of the items in the list are adjacent to the FAP's own FL channel, the FAP MUST take the PilotStrength and total received power spectral density (Io) measured on these channels into account as part of its maximum transmit power selfconfiguration. The RFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators. The list should take into account the ability of the FAP to self-configure its own FL RFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the RFCN selected by the FAP. For example, if only adjacent operator protection is needed and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the RFCNs immediately above and below the range of channels owned by the FAP operator. If an empty string then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLToProtect";
+    }
+    leaf fap-allowed-adj-chan-coverage-hole {
+      type uint8 {
+        range "30..150";
+      }
+      units "dB";
+      config false;
+      description
+        "Defines the maximum allowed coverage hole created on carriers listed in RFCNFLToProtect by the FAP transmission, measured in {{units}}, in terms of RF propagation loss such that the {{param|MaxAllowablePilotStrengthDegradation}} is maintained outside the {{param}} for MS on that {{param|RFCNFLToProtect}}. This value can be used by the FAP's self configuration algorithms to help derive transmit power levels.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPAllowedAdjChanCoverageHole";
+    }
+    leaf acir {
+      type uint64;
+      units "dB";
+      config false;
+      description
+        "AdjacentChannelInterferenceRatio value in {{units}} to be used when determining the coverage hole created on adjacent channels due to leakage.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.ACIR";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
+  }
+
+  grouping cdma2000-one-x-ran-access-parameters-g {
+    description
+      "The object used for configuring access parameter messages for 1x. See {{bibref|3GPP2-C.S0005}}.";
+    leaf nom-pwr {
+      type int64;
+      config false;
+      description
+        "Nominal power correction factor used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwr";
+    }
+    leaf init-pwr {
+      type int64;
+      config false;
+      description
+        "Initial power offset used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.InitPwr";
+    }
+    leaf pwr-step-indb {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Power step increment in successive access probes. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStepIndb";
+    }
+    leaf nom-pwr-ext {
+      type uint8 {
+        range "0..1";
+      }
+      units "dBm";
+      config false;
+      description
+        "{{param}} should be zero for BC0 and BC1. For other band classes, {{param}} is 1 if Mobile's correction factor is between -24dBm and -9dBm. Otherwise {{param}} is zero. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwrExt";
+    }
+    leaf apm-auth {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Enabling/disabling global authentication. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMAuth";
+    }
+    leaf apm-rand-update-prd {
+      type uint16 {
+        range "16..14400";
+      }
+      units "seconds";
+      config false;
+      description
+        "The period (in {{units}}) that the BSS updates the RAND value sent via APM. Only 2 second multiples accepted.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMRandUpdatePrd";
+    }
+    leaf initialpwr {
+      type uint8 {
+        range "0..31";
+      }
+      units "dB";
+      config false;
+      description
+        "Initial power offset for access. The base station shall set this field to the correction factor to be used by mobile stations in the open loop power estimate for the initial transmission on an Access Channel, expressed as a two's complement value in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Initialpwr";
+    }
+    leaf pwr-step {
+      type uint8 {
+        range "0..7";
+      }
+      units "dB";
+      config false;
+      description
+        "Power increment. The base station shall set this field to the value by which mobile stations are to increase their transmit power between successive access probes in an access probe sequence, in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStep";
+    }
+    leaf num-step {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Number of access probes. The base station shall set this field to one less than the maximum number of access probes mobile stations are to transmit in a single access probe sequence.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NumStep";
+    }
+    leaf max-cap-size {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Maximum Access Channel message capsule size. The base station shall set this field to the value in the range 0 to 7. {{param}} is set to three less than the maximum number of Access Channel frames in an Access Channel message capsule.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxCapSize";
+    }
+    leaf preamble-size {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Access Channel preamble length. The base station shall set this field to one less than the number of Access Channel frames that mobile stations are to transmit in each Access Channel preamble.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PreambleSize";
+    }
+    leaf psist09 {
+      type uint8 {
+        range "0..63";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 0 - 9. A value of 63 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist09";
+    }
+    leaf psist10 {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 10 (test Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist10";
+    }
+    leaf psist11 {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 11 (emergency Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist11";
+    }
+    leaf psist12 {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 12. A value of 7 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist12";
+    }
+    leaf psist13 {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 13. A value of 7 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist13";
+    }
+    leaf psist14 {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 14. A value of 7 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist14";
+    }
+    leaf psist15 {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence value for access probes sent by mobiles with Access Overload calls values of 15. A value of 7 indicates such mobiles are not allowed to send access probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist15";
+    }
+    leaf msg-psist {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence modifier for access channel attempts transmitting a message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MsgPsist";
+    }
+    leaf reg-psist {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Persistence modifier for registration message transmission.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.RegPsist";
+    }
+    leaf probe-pn-ran {
+      type uint8 {
+        range "0..9";
+      }
+      config false;
+      description
+        "Time randomization for access channel probes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbePNRan";
+    }
+    leaf acc-tmo {
+      type uint8 {
+        range "0..15";
+      }
+      units "80 ms slots";
+      config false;
+      description
+        "Access transmission timeout. Two less than the time the mobile has to wait before determining that the probe is not received by the BSS. It is in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.AccTmo";
+    }
+    leaf probe-bkoff {
+      type uint8 {
+        range "0..15";
+      }
+      units "frames";
+      config false;
+      description
+        "One less than maximum number for randomized delay between successive access probes in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbeBkoff";
+    }
+    leaf bkoff {
+      type uint8 {
+        range "0..15";
+      }
+      units "80 ms slots";
+      config false;
+      description
+        "One less than maximum number for randomized delay between successive access sequences in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Bkoff";
+    }
+    leaf max-req-seq {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Maximum number of access probe sequences for an access request.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxReqSeq";
+    }
+    leaf max-rsp-seq {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Maximum number of access probe sequences for an access response";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxRspSeq";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
+  }
+
+  grouping cdma2000-one-x-ran-system-parameters-g {
+    description
+      "The object used for configuring system parameter messages for 1x";
+    leaf reg-zone {
+      type uint16 {
+        range "0..4095";
+      }
+      config false;
+      description
+        "registration zone number (refer to Section 2.6.5.1.5 of {{bibref|3GPP2-C.S0005}})";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegZone";
+    }
+    leaf total-zones {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Total number of zones the mobile shall retain for zone based registration. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TotalZones";
+    }
+    leaf zone-timer {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "timer value to be used by the mobile in the zone registration timer. Refer to table 3.7.2.3.2.1-1 of the standard {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.ZoneTimer";
+    }
+    leaf reg-period {
+      type uint8 {
+        range "29..85";
+      }
+      config false;
+      description
+        "Registration period for timer based registration. Registration period is calculated from the formula 2^(REG_PRD/4) x 0.08 seconds. Thus a value of 59 corresponds to 1853.6 seconds (~ 1/2 hour). See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegPeriod";
+    }
+    leaf srch-win-a {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Search window size to be used ny the mobile for active set and candidate set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 11 corresponds to 130 chips";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinA";
+    }
+    leaf srch-win-n {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Search window size to be used by the mobile for neighbor set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinN";
+    }
+    leaf srch-win-r {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Search window size to be used by the mobile for remaining set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinR";
+    }
+    leaf nghbr-max-age {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "neighbor set maximum age beyond which the mobiles are supposed to drop a neighbor. This is the count of neighbout list updat or extended neighbor list updates a mobile shall receive before removing a neighbor from the neighbor list. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.NghbrMaxAge";
+    }
+    leaf pwr-rep-thresh {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "Power control reporting threshold. Number of bad frames a mobile should receive before sending a PMRM message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepThresh";
+    }
+    leaf pwr-rep-frames {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Duration (in number of frames) for measuring bad frames - given by equation 2^(PWR_REP_FRAMES/2) x 5 frames. For example, 6 corresponds to 40 frames. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepFrames";
+    }
+    leaf pwr-thresh-enable {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "enable/disable power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrThreshEnable";
+    }
+    leaf pwr-period-enable {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "enable/disable periodic power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrPeriodEnable";
+    }
+    leaf pwr-rep-delay {
+      type uint8 {
+        range "0..32";
+      }
+      config false;
+      description
+        "Delay (in unit of four frames) following a PMRM before the mobile restarts counting bad frames for power control measuremnt. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepDelay";
+    }
+    leaf rescan {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "If {{param}} is set to 1, the mobiles should restart and reinitialize the System Parameters message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Rescan";
+    }
+    leaf tadd {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "Power threshold (in {{units}}) for transferring a neighbor from neighbor set or remaining set to active set. For example, a value of 26 corresponds to -13 dB. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tadd";
+    }
+    leaf tdrop {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "Drop threshold (in {{units}}) to start a handoff timer to drop a neighbor from active or candidate set. For example, 30 corresponds to -15dB. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tdrop";
+    }
+    leaf tcomp {
+      type uint8 {
+        range "0..15";
+      }
+      units "0.5 dB";
+      config false;
+      description
+        "If a pilot in condidate set exceeds the power of a pilot in active set by threshold, the mobile shall send a power strenght measurement report message. This threshold is defined in unit of {{units}}. For example, 5 corresponds to a threshold of 2.5 dB. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tcomp";
+    }
+    leaf t-tdrop {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Timer value for which an action is taken by the mobile for a neighbor in candidate set or in active set. Refer to Table 2.6.6.2.3-1 of the {{bibref|3GPP2-C.S0005}} for details. For example, 3 corresponds to four seconds";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TTdrop";
+    }
+    leaf in-traffic-tadd {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "T-ADD value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTadd";
+    }
+    leaf in-traffic-tdrop {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "T-Drop value (in {{units}}) used in in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTdrop";
+    }
+    leaf in-traffic-tcomp {
+      type uint8 {
+        range "0..15";
+      }
+      units "dB";
+      config false;
+      description
+        "T_Comp value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTcomp";
+    }
+    leaf in-traffic-ttdrop {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "T_Tdrop timer value value used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTtdrop";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
+  }
+
+  grouping cdma2000-one-x-ran-extended-system-parameters-g {
+    description
+      "The object used for configuring extended system parameter messages for 1x";
+    leaf prev {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "protocol revision";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.Prev";
+    }
+    leaf p-min-rev {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "minimum protocol revision";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PMinRev";
+    }
+    leaf delete-for-tmsi {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Delete Foreign TMSI. The base station shall set this field to '1' to cause the mobile station to delete its TMSI if the TMSI was assigned in a different TMSI zone from that specified by the TMSI_ZONE field of this message; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DeleteForTMSI";
+    }
+    leaf use-tmsi {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Use TMSI indicator. The base station shall set this field to the value shown next field corresponding to the type of MSID that the mobile station is to use on the Access Channel.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.UseTMSI";
+    }
+    leaf pref-msid-type {
+      type uint8 {
+        range "0..3";
+      }
+      config false;
+      description
+        "Preferred Access Channel Mobile Station Identifier Type. F294. The base station shall set this field to the value shown as below corresponding to the type of MSDI that the mobile station is to use on the Access Channel. [useTMSI] [prefMSIDType] [description] 0 00 IMSI_S and ESN 0 10 IMSI 0 11 IMSI and ESN 1 10 TMSI; IMSI 1 11 TMSI; IMSI and ESN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PrefMSIDType";
+    }
+    leaf mcc {
+      type uint16 {
+        range "0..1023";
+      }
+      config false;
+      description
+        "Mobile Country Code. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MCC";
+    }
+    leaf imsi1112 {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "11th and 12th digits of IMSI. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSI1112";
+    }
+    leaf tmsi-zone-len {
+      type uint8 {
+        range "1..8";
+      }
+      config false;
+      description
+        "TMSI zone length. The base station shall set this field to the number of octets included in the TMSI_ZONE. The base station shall set this field to a value in the range 1 to 8 inclusive.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZoneLen";
+    }
+    leaf tmsi-zone {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "TMSI zone. The base station shall set this field to the TMSI zone number as specified in {{bibref|3GPP2-N.S0010}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZone";
+    }
+    leaf bcast-index {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Broadcast slot cycle index. To enable periodic broadcast paging, the base station shall set this field to and unsigned 3-bit number in the range 1-7, equal to the broadcast slot cycle index. To disable periodic broadcast paging, the base station shall set this field to '000'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BcastIndex";
+    }
+    leaf imsit-supported {
+      type int64;
+      config false;
+      description
+        "1: IMISI_T is supported, 0: IMSI_T is not supported. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSITSupported";
+    }
+    leaf soft-slope {
+      type uint8 {
+        range "0..63";
+      }
+      config false;
+      description
+        "The slope in the inequality criterion for adding a pilot to the Active Set, or dropping a pilot from the Active Set. The base station shall set this field as an unsigned binary number.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SoftSlope";
+    }
+    leaf add-intercept {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "The intercept in the inequality criterion for adding a pilot to the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AddIntercept";
+    }
+    leaf drop-intercept {
+      type uint8 {
+        range "0..63";
+      }
+      units "dB";
+      config false;
+      description
+        "The intercept in the inequality criterion for dropping a pilot from the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DropIntercept";
+    }
+    leaf max-num-alt-so {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Maximum number of alternative service options. The base station shall set this field to the maximum number of alternative service option numbers that the mobile station is allowed to include in the Origination Message or the Page Response Message. For mobile stations with MOB_P_REVs less than seven, the alternative service options are those service options defined in TSB-58B and related to SERVICE_OPTION in Origination Message and the Page Response Message. For mobile stations with MOB_P_REVs equal to or greater than seven, the alternative service options are those service options defined in TSB-58B without service group number assigned and related to SERVICE_OPTION in Origination Message and the Page Response Message. The base station sets this field to a value greater than zero, in addition, the base station shall allow the mobile station with MOB_P_REVs equal to or greater than 7 to include - a 4 or 8-bit service option bitmap in the Origination Message and the Page Response Message; - alternative service option numbers, not limited to MAX_ALT_SO_NUM, in the Enhanced Origination Message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumAltSo";
+    }
+    leaf reselected-included {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "System reselection parameters included. If the base station is including system reselection parameters, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.ReselectedIncluded";
+    }
+    leaf ec-thresh {
+      type uint64;
+      units "dBm";
+      config false;
+      description
+        "Pilot power threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_THRESH and set this field to: [ (pilot_power_threshold + 115 ) ] where pilot_power_threshold is the pilot power, Ec, in {{units}}/1.23 MHz, below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcThresh";
+    }
+    leaf ec-io-thresh {
+      type uint64;
+      config false;
+      description
+        "Pilot Ec / Io threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_I0_THRESH and set this field to: [ - 20 x log10 (pilot_threshold) ] where pilot_threshold is the pilot Ec/Io below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcIoThresh";
+    }
+    leaf pilot-report {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Pilot reporting indicator. The base station shall set this field to '1' if the mobile station is to report the additional pilots which have pilot strength exceeding T_ADD in all Access Channel messages. The base station shall set this field to '0' if the mobile station is to report the additional pilots which have pilot strengths exceeding T_ADD only in the Origination Message and the Page Response Message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PilotReport";
+    }
+    leaf nghbr-set-entry-info {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Neighbor Set access entry handoff information included indicator. If the base station is including information on the Neighbor Set access entry handoff, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetEntryInfo";
+    }
+    leaf access-ho-order {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Access entry handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access entry handoff after receiving a message while performing the Mobile Station Order and Message Processing Operation in the Mobile Station Idle State; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOOrder";
+    }
+    leaf nghbr-set-access-info {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Neighbor Set access handoff included indicator. If the base station is including information on the Neighbor Set access handoff or access probe handoff, the base station shall set this field to '1', otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetAccessInfo";
+    }
+    leaf access-ho {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Access handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access handoff; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHO";
+    }
+    leaf access-ho-msg-rsp {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Access handoff permitted for message response indicator. If AccessHO is set to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to '1' if the mobile station is permitted to perform an access handoff after receiving a message and before responding to that message in the System Access State; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOMsgRsp";
+    }
+    leaf access-probe-ho {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Access probe handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the base station is permitted to perform an access probe handoff; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessProbeHO";
+    }
+    leaf acc-ho-list-upd {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Access handoff list update permitted indicator. If AccessProbeHO is included and is set to '1', the base station shall set this field to '1' if the mobile station is permitted to update the access handoff list during an access attempt; otherwise, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccHOListUpd";
+    }
+    leaf acc-probe-ho-other-msg {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Access probe handoff permitted for messages other than the Origination Message and the Page Response Message. If AccessProbeHO is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access probe handoff for messages other than the Origination Message and the Page Response. The base station shall set this field to '0' if the mobile station is permitted to perform an access probe handoff only for the Origination Message and the Page Response Message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccProbeHOOtherMsg";
+    }
+    leaf max-num-probe-ho {
+      type uint8 {
+        range "0..3";
+      }
+      config false;
+      description
+        "Maximum number of times that mobile station is permitted to perform an access probe handoff. If AccessProbeHO is set to '1', the base station shall set this field to the maximum number of times the mobile station is allowed to perform an access probe handoff within an access attempt minus one.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumProbeHO";
+    }
+    leaf brdcast-gps-assit {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "If {{param}} is set to 1, then Braodcast GPS assist is supported. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BrdcastGPSAssit";
+    }
+    leaf qpch-supported {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Quick Paging Channel Supported Indication. If the base station supports Quick Paging Channel operation, the base station shall set this field to '1'; otherwise the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHSupported";
+    }
+    leaf num-qpch {
+      type uint8 {
+        range "1..3";
+      }
+      config false;
+      description
+        "Number of Quick Paging Channels. If the base station sets QPCHSUPPORTED to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to the number of Quick Paging Channels on this CDMA Channel. The base station shall not set this field to '00'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NumQPCH";
+    }
+    leaf qpch-rate {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Quick Paging Channel indicator rate. See {{bibref|3GPP2-C.S0005}}. {{param}} is set as follows: 0: 4800bps; 1: 9600bps.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHRate";
+    }
+    leaf qpch-pwr-level-page {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Quick Paging Channel paging indicator transmit power level. {{param}} is set as follows: 0: 5 dB below; 1: 4 dB below; 2: 3 dB below; 3: 2 dB below; 4: 1 dB below; 5: Same; 6: 1 dB above; 7: 2dB above.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelPage";
+    }
+    leaf qpc-hcci-supported {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Quick Paging Channel configuration change indicator supported. {{param}} is set as follows: if the base station is to support configuration change indicators on the Quick Paging Channel, {{param}} to '1'; otherwise {{param}} is set to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHcciSupported";
+    }
+    leaf qpch-pwr-level-config {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Quick Paging Channel configuration change indicator CONFIG transmit power level. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelConfig";
+    }
+    leaf sdb-supported {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Short Data Burst supported indicator. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SDBSupported";
+    }
+    leaf r-lgain-traffic-pilot {
+      type uint8 {
+        range "0..63";
+      }
+      units "0.125 dB";
+      config false;
+      description
+        "Gain adjustment of the Reverse Traffic Channel relative to the Reverse Pilot Channel for Radio Configurations greater than 2. {{param}} is set to the correction factor to be used by mobile stations in setting the power of a reverse traffic channel, expressed as a two's complement value in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RLgainTrafficPilot";
+    }
+    leaf rvs-pwr-ctrl-delay-incl {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Reverse Power Control Delay included indicator. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelayIncl";
+    }
+    leaf rvs-pwr-ctrl-delay {
+      type uint8 {
+        range "0..3";
+      }
+      units "1.25 ms";
+      config false;
+      description
+        "The reverse power control delay. {{param}} is setto the closed-loop reverse power control delay minus one (the closed-loop reverse power control delay is the time between the end of a gated-on reverse PCG and the beginning of the Forward Power Control Subchannel in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelay";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
+  }
+
+  grouping cdma2000-one-x-ran-forward-pwr-ctr-g {
+    description
+      "The object used for configuring extended channel assignment messages for 1x";
+    leaf fpcfch-init-setpt {
+      type int64;
+      units "0.125 dB";
+      config false;
+      description
+        "Initial Fundamental Channel outer loop Eb/Nt setpoint in {{units}}. For example, 56 corresponds to 7 dB. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHInitSetpt";
+    }
+    leaf fpc-subchan-gain {
+      type int64;
+      units "0.25 dB";
+      config false;
+      description
+        "Forward power control subchannel relative to fwd traffic channel in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCSubchanGain";
+    }
+    leaf rl-gain-adj {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Reverse Traffic Channel power relative to access power in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.RLGainAdj";
+    }
+    leaf fpcfchfer {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "Fundamental Channel target frame error rate. Refer to table 3.7.3.3.2.25-2 of {{bibref|3GPP2-C.S0005}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHFER";
+    }
+    leaf fpcfch-min-setpt {
+      type int64;
+      units "0.125 dB";
+      config false;
+      description
+        "Minimum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMinSetpt";
+    }
+    leaf fpcfch-max-setpt {
+      type int64;
+      units "0.125 dB";
+      config false;
+      description
+        "Maximum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMaxSetpt";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
+  }
+
+  grouping cdma2000-one-x-ran-hard-handoff-g {
+    description
+      "This object provides configurable parameters for 1x Handout";
+    leaf handout-enable {
+      type boolean;
+      config false;
+      description
+        "Enabling handout operation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HandoutEnable";
+    }
+    leaf ho-pilot-power-thresh {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "Pilot power threshold (in {{units}} relative to the FAP pilot power) for handout declaration";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotPowerThresh";
+    }
+    leaf ho-pilot-duration {
+      type uint8 {
+        range "20..50";
+      }
+      units "100ms";
+      config false;
+      description
+        "Timethreshold for handout declaration (in {{units}})";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotDuration";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
+  }
+
+  grouping cdma2000-one-x-ran-hard-handoff-stats-g {
+    description
+      "This object contains statistics for all Handouts of the 1x FAP.";
+    leaf tx-ho-required {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of Handout Required messages sent to the MSC";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHORequired";
+    }
+    leaf rx-ho-command {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of Handout Command messegaes received from the MSC";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOCommand";
+    }
+    leaf ho-required-rejected {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of HO required requests rejected by the MSC";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredRejected";
+    }
+    leaf ho-required-unanswered {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of HO required requests for which no response received from the MSC";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredUnanswered";
+    }
+    leaf tx-uhdm {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number UHDMs sent to mobiles";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxUHDM";
+    }
+    leaf rx-ns-ack {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of MSAcks received from the mobile in response to UHDM";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxNSAck";
+    }
+    leaf ho-failure-count {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of Handout attempts declared as failure";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HOFailureCount";
+    }
+    leaf call-drop-count {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total numer of call drops after a HO attempt. RTC lost without MSack";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.CallDropCount";
+    }
+    leaf tx-ho-commence {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Number of Handout Commenced messages sent to MSC";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHOCommence";
+    }
+    leaf rx-ho-session-clear {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Number of session clear commands received form the core";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOSessionClear";
+    }
+    leaf return-on-failure-count {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of times a Return On Handoff failure was declared";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ReturnOnFailureCount";
+    }
+    leaf one-pilot-report-count {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Number of times only one pilot was reported in HO Required message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.OnePilotReportCount";
+    }
+    leaf two-pilot-report-count {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Number of times only two pilot was reported in HO Required message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TwoPilotReportCount";
+    }
+    leaf three-pilot-report-count {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Number of times only three pilot was reported in HO Required message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ThreePilotReportCount";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
+  }
+
+  grouping cdma2000-one-x-ran-power-control-g {
+    description
+      "Configuration Managed Object for OTA power control attribute.";
+    leaf one-xpcfpc-incl {
+      type int64;
+      config false;
+      description
+        "Whether Forward power control information included in Power Control message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCIncl";
+    }
+    leaf one-xpcfpcfch-min-setpt {
+      type int64;
+      units "0.125 dB";
+      config false;
+      description
+        "The value for the minimum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMinSetpt";
+    }
+    leaf one-xpcfpcfch-max-setpt {
+      type int64;
+      units "0.125 dB";
+      config false;
+      description
+        "The value for the maximum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMaxSetpt";
+    }
+    leaf one-xpcrpc-incl {
+      type int64;
+      config false;
+      description
+        "Whether reverse Power control information included in the Power Control Message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCRPCIncl";
+    }
+    leaf one-xpcfch-chan-adj-gain {
+      type int64;
+      units "0.125 dB";
+      config false;
+      description
+        "Channel adjustment gain (in {{units}}) for Reverse Fundamental Channel.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFCHChanAdjGain";
+    }
+    leaf one-xpc-pwr-rep-thresh {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "The number of bad frames to be received in a measurement period on the channel which carries the Power Control Subchannel before mobile stations are to generate a Power easurement Report Message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepThresh";
+    }
+    leaf one-xpc-pwr-rep-frames {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "Power control reporting frame count. Number of frames over which the mobile station measures frame errors. For example, 7 corresponds to 55 frames. Refer to {{bibref|3GPP2-C.S0005}} for mapping between this value and the actual frame count.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepFrames";
+    }
+    leaf one-x-pwr-thresh-enable {
+      type int64;
+      config false;
+      description
+        "Threshold report mode indicator. If the mobile station is to generate threshold Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate threshold Power Measurement Report Messages, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPwrThreshEnable";
+    }
+    leaf one-xpc-pwr-period-enable {
+      type int64;
+      config false;
+      description
+        "Periodic report mode indicator. If the mobile station is to generate periodic Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate periodic Power Measurement Report Messages, the base station shall set this field to '0'.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrPeriodEnable";
+    }
+    leaf one-xpc-pwr-rep-delay {
+      type uint8 {
+        range "0..31";
+      }
+      units "4 frames";
+      config false;
+      description
+        "Power report delay. The period that the mobile station waits following a Power Measurement Report Message before restarting frame counting for power control purposes. The base station shall set this field to the power report delay values in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepDelay";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
+  }
+
+  grouping cdma2000-one-x-ran-neighbor-list-g {
+    description
+      "This object contains information common to all neighbors of a sector. This object has only one instance.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Alias";
+    }
+    leaf pilot-inc {
+      type int64;
+      config false;
+      description
+        "pilot increment policy for this network. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.PilotInc";
+    }
+    leaf one-x-neighbor-index {
+      type int64;
+      description
+        "Macro neighbour index. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIndex";
+    }
+    leaf neighbor-config {
+      type enumeration {
+        enum "same-config" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SameConfig";
+        }
+        enum "same-paging" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SamePaging";
+        }
+        enum "diff-paging" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - DiffPaging";
+        }
+        enum "unknown" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - Unknown";
+        }
+      }
+      config false;
+      description
+        "Neighbor configuration in terms of number of frequencies having paging channels as defined in Section 3.7.2.3.2 of the {{bibref|3GPP2-C.S0005}} standard";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig";
+    }
+    leaf neighbor-pn {
+      type int64;
+      description
+        "PN offset of the neighbor. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborPN";
+    }
+    leaf search-priority {
+      type enumeration {
+        enum "low" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Low";
+        }
+        enum "medium" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Medium";
+        }
+        enum "high" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - High";
+        }
+        enum "very-high" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - VeryHigh";
+        }
+      }
+      config false;
+      description
+        "priority level for serching this neighbor. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority";
+    }
+    leaf neighbor-band {
+      type enumeration {
+        enum "0" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 0";
+        }
+        enum "1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 1";
+        }
+        enum "2" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 2";
+        }
+        enum "3" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 3";
+        }
+        enum "4" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 4";
+        }
+        enum "5" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 5";
+        }
+        enum "6" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 6";
+        }
+      }
+      config false;
+      description
+        "Neighbor band class. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand";
+    }
+    leaf neighbor-frequency {
+      type int64;
+      config false;
+      description
+        "frequency of neighbor. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborFrequency";
+    }
+    leaf frequency-included {
+      type int64;
+      config false;
+      description
+        "Flag to indicate if the channel id included. See {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.FrequencyIncluded";
+    }
+    leaf in-traffic {
+      type int64;
+      config false;
+      description
+        "whether this neighbor can be used for in-traffic neighborlist message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.InTraffic";
+    }
+    leaf overhead-msg {
+      type int64;
+      config false;
+      description
+        "whether this neighbor can be used for overhead neighborlist message";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OverheadMsg";
+    }
+    leaf base-identifier {
+      type int64;
+      config false;
+      description
+        "unique identifire of the neighboring cell (optional)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.BaseIdentifier";
+    }
+    leaf air-interface {
+      type enumeration {
+        enum "one-x" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - OneX";
+        }
+        enum "is95" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - IS95";
+        }
+        enum "hrpd" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - HRPD";
+        }
+        enum "other" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - Other";
+        }
+      }
+      config false;
+      description
+        "Air interface technology of the neighbor.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface";
+    }
+    leaf hand-out-capable {
+      type int64;
+      config false;
+      description
+        "Flag to indicate if the handOutCapability is possible.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.HandOutCapable";
+    }
+    leaf one-x-neighbor-longitude {
+      type string {
+        length "0..16";
+      }
+      config false;
+      description
+        "Longitude for this neighbor. Parameter is a string representing a floating point real number (+/- XXX.YY). Where + for East, - for West, XXX.Y ranges between 0.0 and 180.0 .";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLongitude";
+    }
+    leaf one-x-neighbor-latitude {
+      type string {
+        length "0..16";
+      }
+      config false;
+      description
+        "Lattitude for this neighbor. Parameter is a string representing a floating point number (+/-XX.Y). + for North, - for South, XX.Y ranges between 0.0 and 90.0.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLatitude";
+    }
+    leaf one-x-neighbor-msc-id {
+      type uint32 {
+        range "0..16777215";
+      }
+      config false;
+      description
+        "IOS MSCID of the neighbors. See {{bibref|3GPP2-A.S0014}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborMSCId";
+    }
+    leaf one-x-neighbor-ios-cell-id {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Cell Identifier of the neighbor (formatted according to Cell Identification Discriminator = '0000 0010', i.e., 12-bit cell value and 4-bit sector value). See {{bibref|3GPP2-A.S0014}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIOSCellId";
+    }
+    leaf force-in-overhead {
+      type boolean;
+      config false;
+      description
+        "If {{param}} is set to {{true}}, the FAP SHOULD include this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}, in which case the FAP MAY include this Neighbor List entry in the Neighbor List overhead messages.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.ForceInOverhead";
+    }
+    leaf included-in-overhead {
+      type boolean;
+      description
+        "If {{param}} is set to {{true}}, the FAP is currently including this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.IncludedInOverhead";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
+  }
+
+  grouping cdma2000-one-x-ran-apidm-g {
+    description
+      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
+    leaf association-type {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "The FAP shall set this field to the value shown in {{bibref|3GPP2-C.S0005}} corresponding to the configuration of the base station.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.AssociationType";
+    }
+    leaf apidlen {
+      type uint8 {
+        range "0..15";
+      }
+      config false;
+      description
+        "The FAP shall set this field to the length of the access point identification in units of 16 bits. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDLEN";
+    }
+    leaf apid {
+      type binary {
+        length "0..16";
+      }
+      config false;
+      description
+        "Access Point Identification. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APID";
+    }
+    leaf apidmask {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Access Point identification Mask. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDMASK";
+    }
+    leaf iosmscid {
+      type uint32 {
+        range "0..16777215";
+      }
+      config false;
+      description
+        "MSC_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSMSCID";
+    }
+    leaf ioscellid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "CELL_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSCELLID";
+    }
+    leaf intrafreqhohysincl {
+      type boolean;
+      config false;
+      description
+        "This field indicates whether the INTRAFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYSINCL";
+    }
+    leaf intrafreqhohys {
+      type uint8 {
+        range "0..127";
+      }
+      config false;
+      description
+        "Intra Frequency Handoff Hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYS";
+    }
+    leaf intrafreqhoslopeincl {
+      type boolean;
+      config false;
+      description
+        "This field indicates whether the INTRAFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPEINCL";
+    }
+    leaf intrafreqhoslope {
+      type uint8 {
+        range "0..63";
+      }
+      config false;
+      description
+        "Intra Frequency Handoff Slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPE";
+    }
+    leaf interfreqhohysincl {
+      type boolean;
+      config false;
+      description
+        "This field indicates whether the INTERFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYSINCL";
+    }
+    leaf interfreqhohys {
+      type uint8 {
+        range "0..127";
+      }
+      config false;
+      description
+        "Inter frequency handoff hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYS";
+    }
+    leaf interfreqhoslopeincl {
+      type boolean;
+      config false;
+      description
+        "This field indicates whether the INTERFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPEINCL";
+    }
+    leaf interfreqhoslope {
+      type uint8 {
+        range "0..63";
+      }
+      config false;
+      description
+        "Inter frequency handoff slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPE";
+    }
+    leaf interfreqsrchthincl {
+      type boolean;
+      config false;
+      description
+        "This field indicates whether the INTERFREQSRCHTH field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTHINCL";
+    }
+    leaf interfreqsrchth {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "Inter-frequency search threshold. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTH";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
+  }
+
+  grouping cdma2000-one-x-ran-apidtm-g {
+    description
+      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
+    leaf apidtextcha-ri-len {
+      type uint16 {
+        range "0..256";
+      }
+      config false;
+      description
+        "Access Point identification Text CHARi field Length ({{param|APIDTEXTCHARi}}). Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARiLEN";
+    }
+    leaf apidtextmsgencoding {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "Access Point identification Text message encoding. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTMSGENCODING";
+    }
+    leaf apidtextcha-ri {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "Access Point Identification Text. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARi";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
+  }
+
+  grouping cdma2000-one-x-ran-appim-g {
+    description
+      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
+    leaf lifetime {
+      type uint8 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Lifetime of the information in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.LIFETIME";
+    }
+    leaf numappirec {
+      type uint16 {
+        range "0..511";
+      }
+      config false;
+      description
+        "The number of entries for {{object|.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.NUMAPPIREC";
+    }
+    leaf appirec-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIRECNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
+  }
+
+  grouping cdma2000-one-x-ran-appim-appirec-g {
+    description
+      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Alias";
+    }
+    leaf apassntype {
+      type uint8 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Access point association type the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APASSNTYPE";
+    }
+    leaf apsidsameasprevious {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "SID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSIDSAMEASPREVIOUS";
+    }
+    leaf apnidsameasprevious {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "NID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNIDSAMEASPREVIOUS";
+    }
+    leaf apbandsameasprevious {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Bandclass same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBANDSAMEASPREVIOUS";
+    }
+    leaf apfreqsameasprevious {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Frequency same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQSAMEASPREVIOUS";
+    }
+    leaf appnrecsameasprevious {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "PN offset same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECSAMEASPREVIOUS";
+    }
+    leaf apsid {
+      type uint16 {
+        range "0..32767";
+      }
+      description
+        "Access point SID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSID";
+    }
+    leaf apnid {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Access point NID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNID";
+    }
+    leaf apband {
+      type uint8 {
+        range "0..31";
+      }
+      description
+        "Access point bandclass in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBAND";
+    }
+    leaf apfreq {
+      type uint16 {
+        range "0..2047";
+      }
+      description
+        "Access point frequency in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQ";
+    }
+    leaf appnrectype {
+      type uint8 {
+        range "0..7";
+      }
+      description
+        "Access point PN offset in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECTYPE";
+    }
+    leaf appnreclen {
+      type uint8 {
+        range "0..31";
+      }
+      description
+        "Length in octets of the access point PN record ({{param|APPNREC}}) in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECLEN";
+    }
+    leaf appnrec {
+      type binary {
+        length "0..31";
+      }
+      description
+        "Access point PN Record in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNREC";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
+  }
+
+  grouping cdma2000-one-x-pcf-config-g {
+    description
+      "CDMA2000 1x PCF configuration information.";
+    leaf pcfpdsn-health-monitor-interval {
+      type uint8 {
+        range "0..180";
+      }
+      units "seconds";
+      config false;
+      description
+        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPDSNHealthMonitorInterval";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
+  }
+
+  grouping cdma2000-one-x-pcf-config-pcf-performance-stats-g {
+    description
+      "This object is used in obtaining the PCF stats";
+    leaf a10-setup-failure-no-reason {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
+    }
+    leaf a10-setup-failure-admin-prohibit {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
+    }
+    leaf a10-setup-failure-insuff-resources {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
+    }
+    leaf a10-setup-failure-failed-auth {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
+    }
+    leaf a10-setup-failure-id-mismatch {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
+    }
+    leaf a10-setup-failure-malformed-req {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
+    }
+    leaf a10-setup-failure-unknown-pdsn {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
+    }
+    leaf a10-setup-failure-unsupp-vend-id {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
+    }
+    leaf total-a10-closed-by-rnc {
+      type uint64;
+      description
+        "Number of A10 closed by the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
+    }
+    leaf total-a10-closed-by-pdsn {
+      type uint64;
+      description
+        "Number of A10 closed by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
+    }
+    leaf total-a10-success-pages {
+      type uint64;
+      description
+        "Numebr of A10 Pages initiated by PCFsucceeded.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
+    }
+    leaf total-a10-failed-pages {
+      type uint64;
+      description
+        "Numebr of A10 Pages initiated by PCF failed.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
+    }
+    leaf total-a10-ingress-bytes {
+      type uint64;
+      units "bytes";
+      description
+        "Number of {{units}} received from the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
+    }
+    leaf total-a10-egress-bytes {
+      type uint64;
+      units "bytes";
+      description
+        "Number of {{units}} transmitted to the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
+    }
+    leaf a10-reg-update-received {
+      type uint64;
+      description
+        "Number of A10 Registration updates received by the FAP PCF";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
+    }
+    leaf total-a10-dropped-pages {
+      type uint64;
+      description
+        "Number of A10 Pages initiated by PCF dropped";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
+  }
+
+  grouping cdma2000-one-x-batch-pcfpdsn-g {
+    description
+      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0. (Refer to {{bibref|3GPP2-A.S0013}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.}}.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Alias";
+    }
+    leaf batch-table-number {
+      type int64;
+      description
+        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry. This number indicates the index of this batch to determine the PDSN number in the PDSN selection algorithm ({{bibref|3GPP2-A.S0013}}).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableNumber";
+    }
+    leaf batch-table-start-ip-address {
+      type inet:ip-address;
+      config false;
+      description
+        "Start IP address of the range of PDSNs.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
+    }
+    leaf batch-table-end-ip-address {
+      type inet:ip-address;
+      config false;
+      description
+        "End IP address of the range of PDSNs.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
+    }
+    leaf batch-table-security-parameter-index {
+      type uint32 {
+        range "0 | 256..4294967295";
+      }
+      config false;
+      description
+        "Security Parameter Index to be used.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
+    }
+    leaf batch-table-secret-key {
+      type binary {
+        length "0..16";
+      }
+      config false;
+      description
+        "Secret key in 32-digit hexidecimal representation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecretKey";
+    }
+    leaf batch-table-ios-version {
+      type enumeration {
+        enum "tia-878-ballot" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
+        }
+        enum "tia-878-1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
+        }
+        enum "tia-878-a" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
+        }
+        enum "tia-878-legacy" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
+        }
+      }
+      config false;
+      description
+        "IOS Version of this PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion";
+    }
+    leaf batch-table-pdsn-admin-status {
+      type int64;
+      config false;
+      description
+        "Administrative status of this PDSN. 0- UP 1-DOWN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
+    }
+    leaf pdsn-type {
+      type enumeration {
+        enum "one-x" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - OneX";
+        }
+        enum "hrpd-rev0" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRev0";
+        }
+        enum "hrpd-rev-a" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRevA";
+        }
+      }
+      config false;
+      description
+        "Indicates the PDSN type for this batch.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
+  }
+
+  grouping cdma2000-one-x-pcfpdsn-g {
+    description
+      "PCFPDSN Object configured for 1x. {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Alias";
+    }
+    leaf pdsn-number {
+      type int64;
+      description
+        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm. ({{bibref|3GPP2-A.S0013}})";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNNumber";
+    }
+    leaf security-parameter-index {
+      type uint32 {
+        range "0 | 256..4294967295";
+      }
+      description
+        "Security Parameter Index used";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityParameterIndex";
+    }
+    leaf security-key {
+      type binary {
+        length "0..16";
+      }
+      description
+        "Secret key in 32-digit hexidecimal representation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityKey";
+    }
+    leaf ios-version {
+      type enumeration {
+        enum "tia-878-ballot" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
+        }
+        enum "tia-878-1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-1";
+        }
+        enum "tia-878-a" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-a";
+        }
+        enum "tia-878-legacy" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
+        }
+      }
+      config false;
+      description
+        "HRPD IOS Version of this PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion";
+    }
+    leaf pds-nadmin-status {
+      type int64;
+      config false;
+      description
+        "Administrative status of this PDSN. 0- UP 1-DOWN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNadminStatus";
+    }
+    leaf pdsn-health-status {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNHealthStatus";
+    }
+    leaf pdsnip-address {
+      type inet:ip-address;
+      config false;
+      description
+        "IP address of the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNIPAddress";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
+  }
+
+  grouping cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g {
+    description
+      "This object is used in obtaining the A11 Registration Update stats for each PDSN";
+    leaf pdsn-number-reg-update-perf {
+      type int64;
+      description
+        "The PDSN Number";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
+    }
+    leaf pdsnip-address-reg-update-perf {
+      type inet:ip-address;
+      description
+        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
+    }
+    leaf a11-reg-update-received-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-update messages receieved from a PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
+    }
+    leaf a11-reg-update-id-check-fail-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
+    }
+    leaf a11-reg-update-auth-check-fail-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
+    }
+    leaf a11-reg-update-for-unknown-psipdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
+    }
+    leaf a11-reg-update-unspecified-reason-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
+    }
+    leaf a11-reg-update-ppp-timeout-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
+    }
+    leaf a11-reg-update-registration-timeout-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
+    }
+    leaf a11-reg-update-pdsn-error-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
+    }
+    leaf a11-reg-update-inter-pcf-handoff-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
+    }
+    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
+    }
+    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
+    }
+    leaf a11-reg-update-accounting-error-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
+    }
+    leaf a11-reg-update-user-failed-authentication-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
+    }
+    leaf a11-reg-update-unknown-cause-code-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
+    }
+    leaf a11-reg-update-without-reason-code-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
+  }
+
+  grouping cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g {
+    description
+      "This object is used in obtaining the PCF PDSN stats for each PDSN";
+    leaf a10-setup-attempts-pdsn {
+      type uint64;
+      description
+        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
+    }
+    leaf a10-setup-successes-pdsn {
+      type uint64;
+      description
+        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
+    }
+    leaf a10-setup-blocks-pdsn {
+      type uint64;
+      description
+        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
+    }
+    leaf a11-reg-req-denied-id-mismatch-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
+    }
+    leaf a11-reg-req-denied-unknown-pdsnpdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
+    }
+    leaf a11-reg-req-denied-no-reason-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with no reason code by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
+    }
+    leaf a11-reg-req-denied-admin-prohibit-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
+    }
+    leaf a11-reg-req-denied-insuff-resources-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
+    }
+    leaf a11-reg-req-denied-failed-auth-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
+    }
+    leaf a11-reg-req-denied-malformed-req-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
+    }
+    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
+    }
+    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
+    }
+    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
+    }
+    leaf a11-reg-req-denied-unknown-error-code-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
+    }
+    leaf a10-reg-req-for-registration-retransmissions-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Requests retransmitted during A10 setup";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
+    }
+    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Requests retransmitted during A10 reregistration";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
+    }
+    leaf a10-reg-req-for-release-retransmissions-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Requests retransmitted during A10 realease";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
+    }
+    leaf pdsn-number-pdsn-perf {
+      type int64;
+      description
+        "The PDSN Number";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
+    }
+    leaf pds-nip-address-pdsn-perf {
+      type inet:ip-address;
+      description
+        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
+  }
+
+  grouping cdma2000-one-x-stats-g {
+    description
+      "This object contains 1x FAP statistics aggregated over all connections of all users over all sectors.";
+    leaf registration-attempts {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of registration attempts";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationAttempts";
+    }
+    leaf registration-fails {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of registrations failed";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationFails";
+    }
+    leaf registrations-blocked {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Unauthorized registrations blocked by admission control";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationsBlocked";
+    }
+    leaf page-attempts {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of attemots to page requests received from the core";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageAttempts";
+    }
+    leaf page-fails {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of page requests rejected or not responded";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageFails";
+    }
+    leaf voice-call-attempts {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of voice call attempts";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallAttempts";
+    }
+    leaf voice-call-failures {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of voice call attempts which failed for various reasons";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallFailures";
+    }
+    leaf voice-calls-blocked {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of voice calls blocked due to lack of authorization";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsBlocked";
+    }
+    leaf voice-calls-dropped {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Number of voice calls dropped due to various reasons other than a normal call release";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsDropped";
+    }
+    leaf data-call-attempts {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of data call attempts";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallAttempts";
+    }
+    leaf data-call-failures {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of data call attemots failed for various reasons";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallFailures";
+    }
+    leaf data-calls-blocked {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of data calls failed due to lack of authorization";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsBlocked";
+    }
+    leaf data-calls-dropped {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of data calls dropped due to reasons other than a normal release.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsDropped";
+    }
+    leaf average-voice-call {
+      type uint32 {
+        range "0..4294967295";
+      }
+      units "milliseconds";
+      description
+        "Average voice call duration in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageVoiceCall";
+    }
+    leaf average-data-call {
+      type uint32 {
+        range "0..4294967295";
+      }
+      units "milliseconds";
+      description
+        "Average data call duration in {{units}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageDataCall";
+    }
+    leaf average-session-in-sec {
+      type uint32 {
+        range "0..4294967295";
+      }
+      units "seconds";
+      description
+        "Average session duration in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageSessionInSec";
+    }
+    leaf total-voice-calls {
+      type uint32 {
+        range "0..4294967295";
+      }
+      units "seconds";
+      description
+        "Total number of successful voice calls";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalVoiceCalls";
+    }
+    leaf total-data-calls {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Total number of successful data calls";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalDataCalls";
+    }
+    leaf fwd-voice-packet-drop-percentage {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Percentage of voice packets dropped in MAC due to signaling";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdVoicePacketDropPercentage";
+    }
+    leaf rev-voice-packet-drop-percentage {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Percentage of voice packets received with bad FQI";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevVoicePacketDropPercentage";
+    }
+    leaf fwd-avg-data-rate {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Average data rate of the scheduler on the forward link";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdAvgDataRate";
+    }
+    leaf rev-avg-data-rate {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Average data rate of the scheduler on reverse link";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevAvgDataRate";
+    }
+    leaf bc-index-zero-to-one-transitions {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexZeroToOneTransitions";
+    }
+    leaf bc-index-one-to-zero-transitions {
+      type uint32 {
+        range "0..4294967295";
+      }
+      description
+        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexOneToZeroTransitions";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
+  }
+
+  grouping cdma2000-one-x-redirect-g {
+    description
+      "CDMA2000 1x service redirection parameters.";
+    leaf redirect-channel-number {
+      type uint16 {
+        range "0..2047";
+      }
+      config false;
+      description
+        "The channel number set from ACS that the FAP uses to redirect the MS in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectChannelNumber";
+    }
+    leaf redirect-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "The bandclass set from ACS that the FAP uses to redirect the MS incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the MS. The supported range is 0..9.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectBandClass";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
+  }
+
+  grouping cdma2000-hrpd-g {
+    description
+      "The object contains attributes related to HRPD.";
+    leaf pcfpdsn-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSNNumberOfEntries";
+    }
+    leaf max-batch-pcfpdsn-entries {
+      type uint64;
+      description
+        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.MaxBatchPCFPDSNEntries";
+    }
+    leaf batch-pcfpdsn-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSNNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.";
+  }
+
+  grouping cdma2000-hrpd-ran-g {
+    description
+      "The object contains attributes related to HRPD RAN.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
+  }
+
+  grouping cdma2000-hrpd-ran-rf-g {
+    description
+      "Contains the details related to HRPD RF";
+    leaf hrpd-car-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "The Band Class this HRPD Carrier object is to operate on. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDCarBandClass";
+    }
+    leaf-list rfcnfl {
+      type string {
+        length "0..64";
+      }
+      config false;
+      min-elements 1;
+      description
+        "{{list}} Each item is a FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for RFCNFL is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|RFCNFLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. If multiple items are specified, they are done in the order of preference.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL";
+    }
+    leaf rfcnfl-in-use {
+      type uint64;
+      description
+        "The FL RFCN being used by the FAP. Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|RFCNFL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|RFCNFL}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFLInUse";
+    }
+    leaf-list pilot-pn {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "{{list}} (maximum length 32) (minimum 1 items) of strings. Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PilotPNInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offsets values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN";
+    }
+    leaf pilot-pn-in-use {
+      type uint64;
+      config false;
+      description
+        "The Pilot PN Offset being used by the FAP. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PilotPN}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PilotPN}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPNInUse";
+    }
+    leaf maxfap-tx-power {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Defines the maximum transmission power allowed on the FAP. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower";
+    }
+    leaf maxfap-tx-power-in-use {
+      type int64;
+      units "0.1 dBm";
+      config false;
+      description
+        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPowerInUse";
+    }
+    leaf control-channel-rate {
+      type int64;
+      config false;
+      description
+        "The data rate of the Control Channel of this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-10.4.1.3.2.4";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ControlChannelRate";
+    }
+    leaf sync-capsule-offset {
+      type int64;
+      config false;
+      description
+        "The offset from the control channel cycle boundary at which the synchronous capsules are to be transmitted for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-9.2.6.1.4.1.2";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SyncCapsuleOffset";
+    }
+    leaf rab-length {
+      type int64;
+      config false;
+      description
+        "The Reverse Activity Bit (RAB) length measured in slots for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2, Table 9.7.6.2-2.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabLength";
+    }
+    leaf rab-offset {
+      type int64;
+      config false;
+      description
+        "The Reverse Activity Bit (RAB) offset for this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabOffset";
+    }
+    leaf sector-id {
+      type binary {
+        length "16";
+      }
+      config false;
+      description
+        "The 128 bit Sector ID for this HRPD SectorElement object. The Sector ID is used in the computation of the long code mask. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SectorID";
+    }
+    leaf color-code {
+      type int64;
+      config false;
+      description
+        "The HRPD color code associated with this sector-element. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ColorCode";
+    }
+    leaf subnet-mask-length {
+      type int64;
+      units "bits";
+      config false;
+      description
+        "{{param}} is the length of the HRPD SubnetMask in {{units}}. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SubnetMaskLength";
+    }
+    leaf hrpd-sec-el-reverse-link-silence-duration {
+      type int64;
+      units "frames";
+      config false;
+      description
+        "Duration of the Reverse Link Silence Interval in units of {{units}}. The duration of the silence interval to be maintained on the reverse link. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilenceDuration";
+    }
+    leaf hrpd-sec-el-reverse-link-silence-period {
+      type int64;
+      units "frames";
+      config false;
+      description
+        "The Reverse Link Silence Interval is defined as the time interval of duration ReverseLinkSilenceDuration frames that starts at times T where T is the CDMA System Time in units of {{units}} and it satisfies the following equation: T mod (2048 x 2^(ReverseLinkSilencePeriod) - 1) = 0. The period in the access cycle duration for which the silence interval shall be maintained on the reverse link. {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilencePeriod";
+    }
+    leaf open-loop-adjust {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "The open loop adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the negative of the nominal power to be used by ATs in the open loop power estimate, expressed as an unsigned value in units of 1 dB. The value used by the AT is -1 times the value of this field. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.OpenLoopAdjust";
+    }
+    leaf probe-initial-adjust {
+      type int64;
+      units "dB";
+      config false;
+      description
+        "The probe initial adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the correction factor to be used by ATs in the open loop power estimate for the initial transmission on the Access Channel, expressed as a two's complement value in units of 1 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeInitialAdjust";
+    }
+    leaf probe-num-steps {
+      type int64;
+      config false;
+      description
+        "The number of power level steps for access probes for the access parameters of this sector-element. FAP sets this field to the maximum number of access probes ATs are to transmit in a single access probe sequence. The access network shall set this field to a value in the range [1 ... 15]. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeNumSteps";
+    }
+    leaf probe-power-step {
+      type int64;
+      units "0.5 dB";
+      config false;
+      description
+        "The power step size (in {{units}}) applied to successive probes on the access channel associated with this sector-element. Probe power increase step. FAPsets this field to the increase in power between probes, in resolution of 0.5 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbePowerStep";
+    }
+    leaf a-persistence {
+      type string {
+        length "0..16";
+      }
+      config false;
+      description
+        "The A-Persistence vector, as per HRPD specification, for controlling contention access on the access channel associated with this sector-element. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6. Format is \"0xAABBCCDD\", where AA, BB, CC, DD are in the range \"01\" through \"3F\" hex.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.APersistence";
+    }
+    leaf rssirab-threshold {
+      type int64;
+      units "0.125 dBm";
+      config false;
+      description
+        "RAB threshold for RSSI based RAB algorithm.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RSSIRABThreshold";
+    }
+    leaf load-rab-threshold {
+      type uint16 {
+        range "0..480";
+      }
+      units "0.125 dB";
+      config false;
+      description
+        "RAB threshold for Load based RAB algorithm in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.LoadRABThreshold";
+    }
+    leaf connection-rate-limit {
+      type uint8 {
+        range "0..3";
+      }
+      config false;
+      description
+        "4 different configurations.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ConnectionRateLimit";
+    }
+    leaf rfe-rl-balance-ratio {
+      type uint8 {
+        range "1..20";
+      }
+      config false;
+      description
+        "Config Parameter for DRC based rate control";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RfeRLBalanceRatio";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
+  }
+
+  grouping cdma2000-hrpd-pcf-config-g {
+    description
+      "CDMA2000 HRPD PCF configuration parameters.";
+    leaf pcfpdsn-health-monitor-interval {
+      type uint8 {
+        range "0..180";
+      }
+      units "seconds";
+      config false;
+      description
+        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPDSNHealthMonitorInterval";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
+  }
+
+  grouping cdma2000-hrpd-pcf-config-pcf-performance-stats-g {
+    description
+      "This object is used in obtaining the PCF stats";
+    leaf a10-setup-failure-no-reason {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
+    }
+    leaf a10-setup-failure-admin-prohibit {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
+    }
+    leaf a10-setup-failure-insuff-resources {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
+    }
+    leaf a10-setup-failure-failed-auth {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
+    }
+    leaf a10-setup-failure-id-mismatch {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
+    }
+    leaf a10-setup-failure-malformed-req {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
+    }
+    leaf a10-setup-failure-unknown-pdsn {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
+    }
+    leaf a10-setup-failure-unsupp-vend-id {
+      type uint64;
+      description
+        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
+    }
+    leaf total-a10-closed-by-rnc {
+      type uint64;
+      description
+        "Number of A10 closed by the FAP RNC";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
+    }
+    leaf total-a10-closed-by-pdsn {
+      type uint64;
+      description
+        "Number of A10 closed by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
+    }
+    leaf total-a10-success-pages {
+      type uint64;
+      description
+        "Numebr of A10 Pages initiated by PCFsucceeded";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
+    }
+    leaf total-a10-failed-pages {
+      type uint64;
+      description
+        "Numebr of A10 Pages initiated by PCF failed";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
+    }
+    leaf total-a10-ingress-bytes {
+      type uint64;
+      units "bytes";
+      description
+        "Number of {{units}} received from the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
+    }
+    leaf total-a10-egress-bytes {
+      type uint64;
+      units "bytes";
+      description
+        "Number of {{units}} transmitted to the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
+    }
+    leaf a10-reg-update-received {
+      type uint64;
+      description
+        "Number of A10 Registration updates received by the FAP PCF";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
+    }
+    leaf total-a10-dropped-pages {
+      type uint64;
+      description
+        "Number of A10 Pages initiated by PCF dropped";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
+  }
+
+  grouping cdma2000-hrpd-batch-pcfpdsn-g {
+    description
+      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0 (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.}}.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Alias";
+    }
+    leaf batch-table-number {
+      type int64;
+      description
+        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableNumber";
+    }
+    leaf batch-table-start-ip-address {
+      type inet:ip-address;
+      config false;
+      description
+        "Start IP address of the range of PDSNs";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
+    }
+    leaf batch-table-end-ip-address {
+      type inet:ip-address;
+      config false;
+      description
+        "End IP address of the range of PDSNs";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
+    }
+    leaf batch-table-security-parameter-index {
+      type uint32 {
+        range "0 | 256..4294967295";
+      }
+      description
+        "Security Parameter Index to be used";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
+    }
+    leaf batch-table-secret-key {
+      type binary {
+        length "0..16";
+      }
+      description
+        "Secret key in 32-digit hexidecimal representation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecretKey";
+    }
+    leaf batch-table-ios-version {
+      type enumeration {
+        enum "tia-878-ballot" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
+        }
+        enum "tia-878-1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
+        }
+        enum "tia-878-a" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
+        }
+        enum "tia-878-legacy" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
+        }
+      }
+      config false;
+      description
+        "HRPD IOS Version of this PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion";
+    }
+    leaf batch-table-pdsn-admin-status {
+      type int64;
+      config false;
+      description
+        "Administrative status of this PDSN. 0- UP 1-DOWN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
+    }
+    leaf pdsn-type {
+      type string {
+        length "0..32";
+      }
+      config false;
+      description
+        "Indicates the PDSN type for this batch.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.PDSNType";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
+  }
+
+  grouping cdma2000-hrpd-pcfpdsn-g {
+    description
+      "PCFPDSN Object configured for HRPD. {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Alias";
+    }
+    leaf pdsn-number {
+      type int64;
+      description
+        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}})";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNNumber";
+    }
+    leaf security-parameter-index {
+      type uint32 {
+        range "256..4294967295";
+      }
+      description
+        "Security Parameter Index used";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityParameterIndex";
+    }
+    leaf security-key {
+      type binary {
+        length "0..16";
+      }
+      description
+        "Secret key in 32-digit hexidecimal representation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityKey";
+    }
+    leaf ios-version {
+      type enumeration {
+        enum "tia-878-ballot" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
+        }
+        enum "tia-878-1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-1";
+        }
+        enum "tia-878-a" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-a";
+        }
+        enum "tia-878-legacy" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
+        }
+      }
+      config false;
+      description
+        "HRPD IOS Version of this PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion";
+    }
+    leaf pds-nadmin-status {
+      type int64;
+      config false;
+      description
+        "Administrative status of this PDSN. 0- UP 1-DOWN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNadminStatus";
+    }
+    leaf pdsn-health-status {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNHealthStatus";
+    }
+    leaf pdsnip-address {
+      type inet:ip-address;
+      config false;
+      description
+        "IP address of the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNIPAddress";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
+  }
+
+  grouping cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g {
+    description
+      "This object is used in obtaining the A11 Session Update stats for each PDSN";
+    leaf pdsn-number-session-update-perf {
+      type int64;
+      description
+        "The PDSN Number";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNNumberSessionUpdatePerf";
+    }
+    leaf pdsnip-address-session-update-perf {
+      type inet:ip-address;
+      description
+        "The IP Address of the PDSN for which the A11 Session Update stats is obtained";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNIPAddressSessionUpdatePerf";
+    }
+    leaf a11-session-update-received-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from a PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateReceivedPDSN";
+    }
+    leaf a11-session-update-accepted-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates accepted for a PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateAcceptedPDSN";
+    }
+    leaf a11-session-update-extended-apipdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN that contained extended API";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateExtendedAPIPDSN";
+    }
+    leaf a11-session-update-for-unknown-psipdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN that conatained unknown PSI";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateForUnknownPSIPDSN";
+    }
+    leaf a11-session-update-denied-id-check-fail-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code \"ID Check Failed \"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedIDCheckFailPDSN";
+    }
+    leaf a11-session-update-denied-auth-check-fail-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Auth Check Failed\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedAuthCheckFailPDSN";
+    }
+    leaf a11-session-update-denied-reason-unspecified-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Unspecified Reason\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedReasonUnspecifiedPDSN";
+    }
+    leaf a11-session-update-denied-poorly-formed-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Poorly Formed\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedPoorlyFormedPDSN";
+    }
+    leaf a11-session-update-denied-session-params-not-updated-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Parameters Not Updated\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedSessionParamsNotUpdatedPDSN";
+    }
+    leaf a11-session-update-denied-qo-s-profile-id-not-supported-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code \"QoS Profile Id Not Updated\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedQoSProfileIdNotSupportedPDSN";
+    }
+    leaf a11-session-update-denied-insufficient-resources-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Insufficient Resources\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedInsufficientResourcesPDSN";
+    }
+    leaf a11-session-update-denied-handoff-in-progress-pdsn {
+      type uint64;
+      description
+        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Handoff In Progress\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedHandoffInProgressPDSN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
+  }
+
+  grouping cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g {
+    description
+      "This object is used in obtaining the A11 Registration Update stats for each PDSN.";
+    leaf pdsn-number-reg-update-perf {
+      type int64;
+      description
+        "The PDSN Number";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
+    }
+    leaf pdsnip-address-reg-update-perf {
+      type inet:ip-address;
+      description
+        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
+    }
+    leaf a11-reg-update-received-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-update messages receieved from a PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
+    }
+    leaf a11-reg-update-id-check-fail-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
+    }
+    leaf a11-reg-update-auth-check-fail-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
+    }
+    leaf a11-reg-update-for-unknown-psipdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
+    }
+    leaf a11-reg-update-unspecified-reason-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
+    }
+    leaf a11-reg-update-ppp-timeout-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
+    }
+    leaf a11-reg-update-registration-timeout-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
+    }
+    leaf a11-reg-update-pdsn-error-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
+    }
+    leaf a11-reg-update-inter-pcf-handoff-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
+    }
+    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
+    }
+    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
+    }
+    leaf a11-reg-update-accounting-error-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
+    }
+    leaf a11-reg-update-user-failed-authentication-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
+    }
+    leaf a11-reg-update-unknown-cause-code-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
+    }
+    leaf a11-reg-update-without-reason-code-pdsn {
+      type uint64;
+      description
+        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
+  }
+
+  grouping cdma2000-hrpd-pcfpdsn-aux-a10-stats-g {
+    description
+      "This object is used in obtaining the Auxillary A10 Connection stats for each PDSN";
+    leaf pdsn-number-aux-a10-perf {
+      type int64;
+      description
+        "The PDSN Number";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNNumberAuxA10Perf";
+    }
+    leaf pdsnip-address-aux-a10-perf {
+      type inet:ip-address;
+      description
+        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNIPAddressAuxA10Perf";
+    }
+    leaf aux-a10-connections-created-in-first-reg-req-pdsn {
+      type uint64;
+      description
+        "Number of Auxillary A10 Connections Created in the First Registration Request Message to the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInFirstRegReqPDSN";
+    }
+    leaf aux-a10-connections-created-in-subsequent-reg-req-pdsn {
+      type uint64;
+      description
+        "Number of Auxillary A10 Connections Created in Subsequent Registration Request Messages to the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInSubsequentRegReqPDSN";
+    }
+    leaf aux-a10-fwd-ip-flows-created-pdsn {
+      type uint64;
+      description
+        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10FwdIpFlowsCreatedPDSN";
+    }
+    leaf aux-a10-rev-ip-flows-created-pdsn {
+      type uint64;
+      description
+        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10RevIpFlowsCreatedPDSN";
+    }
+    leaf aux-a10-ip-flow-accounting-reg-requests-pdsn {
+      type uint64;
+      description
+        "Number of IP flow Accounting Reg Requests sent to the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10IpFlowAccountingRegRequestsPDSN";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
+  }
+
+  grouping cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g {
+    description
+      "This object is used in obtaining the PCF PDSN stats for each PDSN";
+    leaf a10-setup-attempts-pdsn {
+      type uint64;
+      description
+        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
+    }
+    leaf a10-setup-successes-pdsn {
+      type uint64;
+      description
+        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
+    }
+    leaf a10-setup-blocks-pdsn {
+      type uint64;
+      description
+        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
+    }
+    leaf a11-reg-req-denied-id-mismatch-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
+    }
+    leaf a11-reg-req-denied-unknown-pdsnpdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
+    }
+    leaf a11-reg-req-denied-no-reason-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with no reason code by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
+    }
+    leaf a11-reg-req-denied-admin-prohibit-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
+    }
+    leaf a11-reg-req-denied-insuff-resources-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
+    }
+    leaf a11-reg-req-denied-failed-auth-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
+    }
+    leaf a11-reg-req-denied-malformed-req-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
+    }
+    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
+    }
+    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
+    }
+    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
+      type uint64;
+      description
+        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
+    }
+    leaf a11-reg-req-denied-unknown-error-code-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
+    }
+    leaf a10-reg-req-for-registration-retransmissions-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Requests retransmitted during A10 setup";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
+    }
+    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Requests retransmitted during A10 reregistration";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
+    }
+    leaf a10-reg-req-for-release-retransmissions-pdsn {
+      type uint64;
+      description
+        "Number of A11 Registration Requests retransmitted during A10 realease";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
+    }
+    leaf pdsn-number-pdsn-perf {
+      type int64;
+      description
+        "The PDSN Number";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
+    }
+    leaf pds-nip-address-pdsn-perf {
+      type inet:ip-address;
+      description
+        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
+  }
+
+  grouping cdma2000-hrpd-redirect-g {
+    description
+      "CDMA2000 HRPD service redirection parameters.";
+    leaf redirect-channel-number {
+      type uint16 {
+        range "0..2047";
+      }
+      config false;
+      description
+        "The channel number set from ACS that the FAP uses to redirect the AT in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectChannelNumber";
+    }
+    leaf redirect-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "The bandclass set from ACS that the FAP uses to redirect the AT incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..9.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectBandClass";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
+  }
+
+  grouping cdma2000-hrpd-call-control-stats-g {
+    description
+      "Details on call control stats";
+    leaf num-session-setup-attempts {
+      type uint64;
+      description
+        "This parameter is a counter for the total number of session instances that are created on a specific FAP when a regular session setup attempt is initiated with an unknown RATI";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupAttempts";
+    }
+    leaf num-session-setup-successful {
+      type uint64;
+      description
+        "This parameter is a counter for the total number of successful regular session setup attempts that are initiated with an unknown RATI";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupSuccessful";
+    }
+    leaf num-current-sessions-established {
+      type uint64;
+      description
+        "This parameter is a counter for the total number of successfully established HRPD Sessions that exists on a specific picasso";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumCurrentSessionsEstablished";
+    }
+    leaf num-page-messages-to-at {
+      type uint64;
+      description
+        "The number of times a Page Message was sent to the AT to facilitate the setup of a connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPageMessagesToAt";
+    }
+    leaf num-pages-succeeded {
+      type uint64;
+      description
+        "The total number of pages succeeded";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPagesSucceeded";
+    }
+    leaf num-connections-opened {
+      type uint64;
+      description
+        "Total HRPD Connections Opened";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnectionsOpened";
+    }
+    leaf num-session-setups-failed-to-term-auth {
+      type uint64;
+      description
+        "This parameter is a counter for the total number of HRPD session setups that are aborted due to various failure reasons";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupsFailedToTermAuth";
+    }
+    leaf num-forward-rlp-bytes {
+      type uint64;
+      units "bytes";
+      description
+        "Number of HRPD packets(bytes) sent from PDSN to AT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardRLPBytes";
+    }
+    leaf num-reverse-rlp-bytes {
+      type uint64;
+      units "bytes";
+      description
+        "No. of HRPD packets(bytes) sent from AT to PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumReverseRLPBytes";
+    }
+    leaf average-session-setup-time {
+      type uint64;
+      units "10 ms";
+      description
+        "This parameter maintains a record of the average session setup time for all successfully setup sessions on a specific FAP. The average session setup time is in units of {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AverageSessionSetupTime";
+    }
+    leaf average-page-setup-time {
+      type uint64;
+      description
+        "The average connection setup time in response to a FAP initiated page. The time is from initiation of Page to the time the connection is declared open";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AveragePageSetupTime";
+    }
+    leaf num-conn-setups-aborted {
+      type uint64;
+      description
+        "The number of connection setups that were aborted";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnSetupsAborted";
+    }
+    leaf num-forward-pre-rlp-dropped-pkts {
+      type uint64;
+      description
+        "Number of packets dropped at Pre-RLP queue due to overflow in forward direction. This counter will also be written to the performance log.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardPreRLPDroppedPkts";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
+  }
+
+  grouping cdma2000-hrpd-qo-s-stats-g {
+    description
+      "This object is used in obtaining the QoS Common Performance stats";
+    leaf num-qo-s-subscriber-profile-updates-rcvd {
+      type uint64;
+      description
+        "Number of subscriber QoS profile updates received from the PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSubscriberProfileUpdatesRcvd";
+    }
+    leaf num-pdsnip-flow-updates-msg-rcvd {
+      type uint64;
+      description
+        "Number of PDSN IP flow update messages received from PDSN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgRcvd";
+    }
+    leaf num-pdsnip-flow-updates-msg-failed {
+      type uint64;
+      description
+        "Number of PDSN IP Flow updates messages that failed per RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgFailed";
+    }
+    leaf num-qo-s-setup-requests-received {
+      type uint64;
+      description
+        "Number of QoS setup requests received from the AT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsReceived";
+    }
+    leaf num-qo-s-setup-requests-accepted {
+      type uint64;
+      description
+        "Number of QoS setup requests received from the AT that the FAP RNC accepted.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsAccepted";
+    }
+    leaf num-qo-s-setup-requests-rejected {
+      type uint64;
+      description
+        "Number of QoS setup requests from the AT that the FAP RNC rejected.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsRejected";
+    }
+    leaf num-reservation-on-requests-received {
+      type uint64;
+      description
+        "Number of ReservationOnRequest messages received from the AT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsReceived";
+    }
+    leaf num-reservation-on-requests-accepted {
+      type uint64;
+      description
+        "Number of ReservationOnRequest messages received from the AT that the FAP RNC accepted.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsAccepted";
+    }
+    leaf num-reservation-on-requests-rejected {
+      type uint64;
+      description
+        "Number of ReservationOnRequest message received from the AT that the FAP RNC rejected.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsRejected";
+    }
+    leaf num-reservation-on-requests-failed {
+      type uint64;
+      description
+        "Number of ReservationOnRequest message received from the AT that the FAP RNC failed.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsFailed";
+    }
+    leaf num-fwd-reservation-on-messages-sent {
+      type uint64;
+      description
+        "Number of times the FAP RNC sent a FwdReservationOn message to the AT to activate a forward Reservation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOnMessagesSent";
+    }
+    leaf num-rev-reservation-on-messages-sent {
+      type uint64;
+      description
+        "Number of times the FAP RNC sent a RevReservationOn message to the AT to activate a reverse Reservation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOnMessagesSent";
+    }
+    leaf num-reservation-off-requests-received {
+      type uint64;
+      description
+        "Number of ReservationOffRequest message is received from the AT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsReceived";
+    }
+    leaf num-reservation-off-requests-accepted {
+      type uint64;
+      description
+        "Number of ReservationOffRequest messages received from the AT that the FAP RNC accepted.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsAccepted";
+    }
+    leaf num-reservation-off-requests-rejected {
+      type uint64;
+      description
+        "Number of ReservationOffRequest messages received from the AT that the FAP RNC rejected.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsRejected";
+    }
+    leaf num-fwd-reservation-off-messages-sent {
+      type uint64;
+      description
+        "Number of times the FAP RNC sent a FwdReservationOff message to the AT to deactivate a forward Reservation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOffMessagesSent";
+    }
+    leaf num-rev-reservation-off-messages-sent {
+      type uint64;
+      description
+        "Number of times the FAP RNC sent a RevReservationOff message to the AT to deactivate a reverse Reservation.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOffMessagesSent";
+    }
+    leaf num-qo-s-release-requests-received {
+      type uint64;
+      description
+        "Number of QoS release requests received from the AT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSReleaseRequestsReceived";
+    }
+    leaf num-connection-close-initiated-no-ran-rsr {
+      type uint64;
+      description
+        "Number of times FAP RNC initiated a connection close in response to the ReservationOnRequest because it did not have the RAN resources to satisfy one or more Reservations included in the request.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumConnectionCloseInitiatedNoRANRsr";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
+  }
+
+  grouping cdma2000-hrpd-rnc-sig-apps-stats-g {
+    description
+      "Stats for HRPD RNC signaling procedures.";
+    leaf c-num-page-requests {
+      type uint64;
+      description
+        "Number of HRPD Page requests made after data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageRequests";
+    }
+    leaf s-num-page-requests {
+      type uint64;
+      description
+        "Number of HRPD Page requests made before data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageRequests";
+    }
+    leaf s-num-connection-setup-attempts {
+      type uint64;
+      description
+        "Number of HRPD Connection setups attempted before data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupAttempts";
+    }
+    leaf c-num-connection-setup-attempts {
+      type uint64;
+      description
+        "Number of HRPD Connection setups attempted after data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupAttempts";
+    }
+    leaf s-num-connection-setup-success {
+      type uint64;
+      description
+        "Number of HRPD Connection setups succeeded before data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupSuccess";
+    }
+    leaf c-num-connection-setup-success {
+      type uint64;
+      description
+        "Number of HRPD Connection setups succeeded after data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupSuccess";
+    }
+    leaf s-num-normal-connection-closes {
+      type uint64;
+      description
+        "The number of HRPD connections that were closed normally before data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNormalConnectionCloses";
+    }
+    leaf c-num-normal-connection-closes {
+      type uint64;
+      description
+        "The number of HRPD connections that were closed normally after data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNormalConnectionCloses";
+    }
+    leaf s-num-total-connection-closes {
+      type uint64;
+      description
+        "The total number of HRPD connections closed, normally or abnormally, data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumTotalConnectionCloses";
+    }
+    leaf c-num-total-connection-closes {
+      type uint64;
+      description
+        "The total number of HRPD connections closed, normally or abnormally, after data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumTotalConnectionCloses";
+    }
+    leaf s-num-rf-related-drops {
+      type uint64;
+      description
+        "Number of HRPD connection close because of RTC loss or No FTC before data has flowed on the A10 connection";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDrops";
+    }
+    leaf c-num-rf-related-drops {
+      type uint64;
+      description
+        "Number of HRPD connection close because of RTC loss or No FTC after data has flowed on the A10 connection";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDrops";
+    }
+    leaf s-num-page-responses {
+      type uint64;
+      description
+        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and before data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageResponses";
+    }
+    leaf c-num-page-responses {
+      type uint64;
+      description
+        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and after data has flowed on the A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageResponses";
+    }
+    leaf s-num-rf-related-drops-rtc-lost {
+      type uint64;
+      description
+        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsRTCLost";
+    }
+    leaf c-num-rf-related-drops-rtc-lost {
+      type uint64;
+      description
+        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsRTCLost";
+    }
+    leaf s-num-rf-related-drops-no-ftc {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsNoFTC";
+    }
+    leaf c-num-rf-related-drops-no-ftc {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsNoFTC";
+    }
+    leaf s-num-network-error-drops {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the open A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDrops";
+    }
+    leaf c-num-network-error-drops {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the open A10 connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDrops";
+    }
+    leaf s-num-network-error-drops-rnc-internal {
+      type uint64;
+      description
+        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCInternal";
+    }
+    leaf c-num-network-error-drops-rnc-internal {
+      type uint64;
+      description
+        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCInternal";
+    }
+    leaf s-num-network-error-drops-rnc-external {
+      type uint64;
+      description
+        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCExternal";
+    }
+    leaf c-num-network-error-drops-rnc-external {
+      type uint64;
+      description
+        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCExternal";
+    }
+    leaf s-num-network-error-drops-a10-setup-fail {
+      type uint64;
+      description
+        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsA10SetupFail";
+    }
+    leaf c-num-network-error-drops-a10-setup-fail {
+      type uint64;
+      description
+        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsA10SetupFail";
+    }
+    leaf s-num-misc-drops-sector-down {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsSectorDown";
+    }
+    leaf c-num-misc-drops-sector-down {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsSectorDown";
+    }
+    leaf s-num-misc-drops-internal-error {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection due to internal software errors.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsInternalError";
+    }
+    leaf c-num-misc-drops-internal-error {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection due to internal software errors.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsInternalError";
+    }
+    leaf c-num-misc-drops-state-mismatch {
+      type uint64;
+      description
+        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection when the FAP finds a state mismatch between itself andthe AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsStateMismatch";
+    }
+    leaf s-num-misc-drops-state-mismatch {
+      type uint64;
+      description
+        "This statistic counts the number of connections that were dropped before the demarcation point when the FAP finds a state mismatch between itself and the AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsStateMismatch";
+    }
+    leaf s-num-misc-drops-due-to-rlp {
+      type uint64;
+      description
+        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsDueToRLP";
+    }
+    leaf c-num-misc-drops-due-to-rlp {
+      type uint64;
+      description
+        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsDueToRLP";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
+  }
+
+  grouping cdma2000-hrpd-access-auth-config-g {
+    description
+      "HRPD A12-related service stats.";
+    leaf a12-access-authentication-enable {
+      type int64;
+      config false;
+      description
+        "Flag to enable/Disable HRPD Access Authentication. {{true}} - Enabled, {{false}} - Disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.A12AccessAuthenticationEnable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
+  }
+
+  grouping cdma2000-hrpd-access-auth-stats-g {
+    description
+      "This object is used in obtaining the Access Authentication related stats.";
+    leaf an-ppp-authentication-attempts-by-node {
+      type uint64;
+      description
+        "Number of AnPppAuthentications attempted by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AnPppAuthenticationAttemptsByNode";
+    }
+    leaf a12-requests-sent-from-node {
+      type uint64;
+      description
+        "Number of A12 Access Requests Sent from the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RequestsSentFromNode";
+    }
+    leaf a12-rejects-received-by-node {
+      type uint64;
+      description
+        "Number of A12 Access Rejects received from the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RejectsReceivedByNode";
+    }
+    leaf a12-accepts-received-by-node {
+      type uint64;
+      description
+        "Number of A12 Access Accepts received by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AcceptsReceivedByNode";
+    }
+    leaf a12-access-challenges-received-by-node {
+      type uint64;
+      description
+        "Number of A12 Access Challenges received by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AccessChallengesReceivedByNode";
+    }
+    leaf a12-retransmits-sent-from-node {
+      type uint64;
+      description
+        "Number of A12 Access Requests retransmitted from the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RetransmitsSentFromNode";
+    }
+    leaf a12-timeouts-events-for-node {
+      type uint64;
+      description
+        "Number of A12 Timeout events occurred at the FAP due to unreachability of the AAA server/ no response from the AAA server.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TimeoutsEventsForNode";
+    }
+    leaf a12-malformedresponse-received-by-node {
+      type uint64;
+      description
+        "Number of Malformed A12 Access Response received by the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12MalformedresponseReceivedByNode";
+    }
+    leaf a12-bad-authenticator-received-by-node {
+      type uint64;
+      description
+        "Number of A12 Access Response with Bad Authenticator received by the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12BadAuthenticatorReceivedByNode";
+    }
+    leaf a12-unknown-type-received-by-node {
+      type uint64;
+      description
+        "Number of A12 Packet of unknown type received by the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownTypeReceivedByNode";
+    }
+    leaf a12-unknown-pkt-received-by-node {
+      type uint64;
+      description
+        "Number of unknown A12 packets received by the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownPktReceivedByNode";
+    }
+    leaf a12-unknown-server-received-by-node {
+      type uint64;
+      description
+        "Number of A12 packets received from unknown AAA server by the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownServerReceivedByNode";
+    }
+    leaf a12-other-failure-occurences-in-node {
+      type uint64;
+      description
+        "Number of A12 packets failed due to other failure occurences in the AAA server.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12OtherFailureOccurencesInNode";
+    }
+    leaf a12-by-pass-num-ats-with-unknown-mfr-code-by-node {
+      type uint64;
+      description
+        "Number of ATs with UnknowMfrCode detected in the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12ByPassNumAtsWithUnknownMfrCodeByNode";
+    }
+    leaf a12-tx-path-fail-due-to-an-ppp-error-by-node {
+      type uint64;
+      description
+        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"AnPPP Error\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToAnPppErrorByNode";
+    }
+    leaf a12-tx-path-fail-due-to-no-server-available-by-node {
+      type uint64;
+      description
+        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No Server Available\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoServerAvailableByNode";
+    }
+    leaf a12-tx-path-fail-due-to-internal-error-by-node {
+      type uint64;
+      description
+        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"internal error\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToInternalErrorByNode";
+    }
+    leaf a12-tx-path-fail-due-to-no-packet-id-available-by-node {
+      type uint64;
+      description
+        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No packet id available\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoPacketIdAvailableByNode";
+    }
+    leaf a12-tx-path-fail-due-to-transmit-error-by-node {
+      type uint64;
+      description
+        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"Transmit Error\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToTransmitErrorByNode";
+    }
+    leaf a12-svr-timeouts-for-node {
+      type uint64;
+      description
+        "Number of A12 server timeouts happened in the FAP RNC.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SvrTimeoutsForNode";
+    }
+    leaf a12-enh-ta-bypass-lcp-timeout-by-node {
+      type uint64;
+      description
+        "Number of LCP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassLcpTimeoutByNode";
+    }
+    leaf a12-enh-ta-bypass-chap-timeout-by-node {
+      type uint64;
+      description
+        "Number of CHAP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapTimeoutByNode";
+    }
+    leaf a12-enh-ta-bypass-chap-invalid-by-node {
+      type uint64;
+      description
+        "Number of CHAP Challenge response received from the AT when Enhanced TA A12Bypass mode is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapInvalidByNode";
+    }
+    leaf a12-enh-ta-bypass-chap-nai-matches-a12-bypass-list-by-node {
+      type uint64;
+      description
+        "Number of times the CHAP NAI received from the AT matches with A12Bypass List in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapNaiMatchesA12BypassListByNode";
+    }
+    leaf a12-session-ta-timeout-by-node {
+      type uint64;
+      description
+        "Number of times Session timeouts occurred due to TA.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SessionTaTimeoutByNode";
+    }
+    leaf access-auth-failed-due-to-session-close-total {
+      type uint64;
+      description
+        "Number of times the Access Authenticaiton failed due to Sesion close.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthFailedDueToSessionCloseTotal";
+    }
+    leaf access-auth-succeeded {
+      type uint64;
+      description
+        "Number of times the Access Authenticaiton succeeded.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthSucceeded";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
+  }
+
+  grouping cdma2000-beacon-g {
+    description
+      "This object models the attributes to control the generalized beacon. The beacon is modeled as a beacon frame composed of multiple beacon intervals. The beacon frame start is time-aligned to the instant when 1x 80ms paging frames and HRPD control channel frames align (occurs once every 1.28s).";
+    leaf beacon-admin-status {
+      type enumeration {
+        enum "locked" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Locked";
+        }
+        enum "unlocked" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Unlocked";
+        }
+      }
+      config false;
+      description
+        "Allows administrative control of beacon.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus";
+    }
+    leaf beacon-oper-status {
+      type enumeration {
+        enum "locked" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Locked";
+        }
+        enum "unlocked" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Unlocked";
+        }
+        enum "fault" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Fault";
+        }
+      }
+      description
+        "Reports operational status of beacon.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus";
+    }
+    leaf hrpd-beacon-enable {
+      type boolean;
+      config false;
+      description
+        "If set to {{true}} the HRPD-specific beacon described by {{object|HRPDBeaconList}} object is enabled. If set to {{false}}, all HRPD beacons (if any) are contained in the BeaconList object.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconEnable";
+    }
+    leaf period {
+      type uint16 {
+        range "0..32767";
+      }
+      units "80 ms slots";
+      config false;
+      description
+        "Length and periodicity of the beacon frame in {{units}}. Reference - {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.Period";
+    }
+    leaf maxfap-beacon-tx-power {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Maximum transmission power allowed on the FAP Beacon frequencies. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower";
+    }
+    leaf maxfap-beacon-tx-power-in-use {
+      type int64;
+      units "0.1 dBm";
+      description
+        "Maximum beacon transmission power measured in {{units}} currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPowerInUse";
+    }
+    leaf beacon-pch-pwr-percentage {
+      type int64;
+      units "0.001 percent";
+      config false;
+      description
+        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPchPwrPercentage";
+    }
+    leaf max-hrpd-beacon-tx-power {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Maximum transmission power allowed on the dedicated HRPD beacon. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". MaxHRPDBeaconTxPower identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower";
+    }
+    leaf max-hrpd-beacon-tx-power-in-use {
+      type int64;
+      units "0.1 dBm";
+      description
+        "Maximum beacon transmission power measured in dBm currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 in units of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPowerInUse";
+    }
+    leaf beacon-pilot-pwr-percentage {
+      type int64;
+      units "0.001 percent";
+      config false;
+      description
+        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.950% of total.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPilotPwrPercentage";
+    }
+    leaf beacon-sync-pwr-percentage {
+      type int64;
+      units "0.001 percent";
+      config false;
+      description
+        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.458% of the max sector power.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconSyncPwrPercentage";
+    }
+    leaf max-beacon-list-entries {
+      type uint64;
+      description
+        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.BeaconList.{i}.}} object.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxBeaconListEntries";
+    }
+    leaf beacon-list-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconListNumberOfEntries";
+    }
+    leaf max-hrpd-beacon-list-entries {
+      type uint64;
+      description
+        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.}} object.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconListEntries";
+    }
+    leaf hrpd-beacon-list-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconListNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.";
+  }
+
+  grouping cdma2000-beacon-beacon-list-g {
+    description
+      "This object models an individual beacon intervals. It may be used to model both 1x and HRPD beacons with offset from start of beacon frame measured in 80ms slots.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Alias";
+    }
+    leaf beacon-index {
+      type int64;
+      description
+        "Instance identifier for this beacon interval. Allowed range is 0..(BeaconListNumberOfEntries-1).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconIndex";
+    }
+    leaf offset {
+      type uint16 {
+        range "0..32767";
+      }
+      config false;
+      description
+        "Offset from the start of the beacon frame in 80ms slots.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Offset";
+    }
+    leaf duration {
+      type uint16 {
+        range "0..32767";
+      }
+      units "80 ms slots";
+      config false;
+      description
+        "Duration of this beacon interval in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Duration";
+    }
+    leaf transmission-format {
+      type enumeration {
+        enum "0" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 0";
+        }
+        enum "1" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 1";
+        }
+      }
+      config false;
+      description
+        "Determines if this beacon interval shall transmit HRPD (HRPD) or CDMA2000 1x.{HRPD=\"0\", 1x=\"1\"}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat";
+    }
+    leaf beacon-band-class {
+      type int64;
+      config false;
+      description
+        "Band class for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconBandClass";
+    }
+    leaf beacon-channel-freq {
+      type uint16 {
+        range "0..2016";
+      }
+      config false;
+      description
+        "Channel number for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconChannelFreq";
+    }
+    leaf-list beacon-pn-offset {
+      type string {
+        length "0..32";
+      }
+      config false;
+      min-elements 1;
+      description
+        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPNOffset";
+    }
+    leaf tx-power {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "TX power for the beacon interval (in {{units}}). If self-configuration of the Beacon Tx Power is enabled, then this value is determined by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TxPower";
+    }
+    leaf beacon-sid {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "SID for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconSID";
+    }
+    leaf beacon-nid {
+      type uint16 {
+        range "0..32767";
+      }
+      config false;
+      description
+        "NID for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconNID";
+    }
+    leaf beacon-pzid {
+      type uint64;
+      config false;
+      description
+        "PZID for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPZID";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
+  }
+
+  grouping cdma2000-beacon-hrpd-beacon-list-g {
+    description
+      "This object models individual HRPD beacon intervals where the beacon start is expressed as a number of HRPD control channel slots from the start of the beacon frame.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Alias";
+    }
+    leaf beacon-index {
+      type int64;
+      description
+        "Instance identifier for this beacon interval. Allowed range is 0..(HRPDBeaconListNumberOfEntries-1).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconIndex";
+    }
+    leaf c-coffset {
+      type uint16 {
+        range "0..2048";
+      }
+      config false;
+      description
+        "Offset of the current beacon interval from the start of the beacon frame, in Control Channel cycles. The HRPDBeaconList interval SHOULD not overlap in time with any beacon interval for the same channel defined in the BeaconList object.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.CCoffset";
+    }
+    leaf offset {
+      type int64;
+      config false;
+      description
+        "Start of beacon transmission with respect to the Control Channel boundary.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Offset";
+    }
+    leaf duration {
+      type uint16 {
+        range "0..256";
+      }
+      config false;
+      description
+        "Duration of the beacon transmission within a Control Channel cycle, in slots. Beacon is transmitted starting offset from the CC boundary for duration. Transmission restarts offset from the next CC boundary, given that beacon interval spans more than 1 CC cycles.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Duration";
+    }
+    leaf num-c-ccycles {
+      type uint8 {
+        range "0..48";
+      }
+      config false;
+      description
+        "Number of Control Channel Cycles this beacon interval spans.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.NumCCcycles";
+    }
+    leaf beacon-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      config false;
+      description
+        "Band class for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconBandClass";
+    }
+    leaf beacon-channel-freq {
+      type uint16 {
+        range "0..2016";
+      }
+      config false;
+      description
+        "Channel number for this beacon interval.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconChannelFreq";
+    }
+    leaf-list beacon-pn-offset {
+      type string {
+        length "0..256";
+      }
+      config false;
+      min-elements 1;
+      description
+        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconPNOffset";
+    }
+    leaf tx-power {
+      type int64;
+      units "dBm";
+      config false;
+      description
+        "TX power for the beacon interval. If self-configuration of the HRPD Beacon Tx Power is enabled, then this value is determined by the FAP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.TxPower";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
+  }
+
+  grouping rem-g {
+    description
+      "This object contains parameters relating to REM (Radio Environment Measurement).";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.";
+  }
+
+  grouping rem-umts-g {
+    description
+      "This object contains Radio Environment Measurement parameters for UMTS FAP.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.";
+  }
+
+  grouping rem-umts-wcdma-g {
+    description
+      "This object contains parameters relating to radio environment measurement capabilities for the UMTS system.";
+    leaf in-service-handling {
+      type enumeration {
+        enum "immediate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Immediate";
+        }
+        enum "delayed" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Delayed";
+        }
+      }
+      default "immediate";
+      config false;
+      description
+        "FAP REM behavior with respect to ongoing active connections.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling";
+    }
+    leaf scan-on-boot {
+      type boolean;
+      default "true";
+      config false;
+      description
+        "Enables or disables Radio Environment Measurement during the FAP start up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanOnBoot";
+    }
+    leaf scan-periodically {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanPeriodically";
+    }
+    leaf periodic-interval {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicInterval";
+    }
+    leaf periodic-time {
+      type yang:date-and-time;
+      config false;
+      description
+        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicTime";
+    }
+    leaf-list remplmn-list {
+      type string;
+      config false;
+      max-elements "32";
+      description
+        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMPLMNList";
+    }
+    leaf-list rem-band-list {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "{{list}} Each item is a UMTS Band to measure. Each band is identified in by a roman numeral {{bibref|3GPP-TS.25.104}}. If {{empty}} then no specific UMTS band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMBandList";
+    }
+    leaf-list uarfcndl-list {
+      type string;
+      config false;
+      max-elements "64";
+      description
+        "{{list}} Each entry is a UARFCN in the DL direction to measure. If {{empty}}, then no specific UARFCN is provided, meaning that the FAP is required to scan all UARFCNs that it is aware of.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.UARFCNDLList";
+    }
+    leaf scan-timeout {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanTimeout";
+    }
+    leaf scan-status {
+      type enumeration {
+        enum "indeterminate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Indeterminate";
+        }
+        enum "in-progress" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - InProgress";
+        }
+        enum "success" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Success";
+        }
+        enum "error" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error";
+        }
+        enum "error-timeout" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error_TIMEOUT";
+        }
+      }
+      description
+        "Indicates the current status of this scan.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus";
+    }
+    leaf error-details {
+      type string {
+        length "0..256";
+      }
+      description
+        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ErrorDetails";
+    }
+    leaf last-scan-time {
+      type yang:date-and-time;
+      description
+        "The time of the last UMTS system radio environment measurement.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.LastScanTime";
+    }
+    leaf max-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.UMTS.WCDMA.Cell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.MaxCellEntries";
+    }
+    leaf cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.CellNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.";
+  }
+
+  grouping rem-umts-wcdma-cell-g {
+    leaf rem-umts-wcdma-cell-key {
+      type string;
+      description
+        "Key value for this object, which could be an item of a list.";
+    }
+    description
+      "Table indicating the components of the discovered cells.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
+  }
+
+  grouping rem-umts-wcdma-cell-rf-g {
+    description
+      "Table indicating the RF aspect of the discovered cells.";
+    leaf uarfcndl {
+      type uint16 {
+        range "0..16383";
+      }
+      description
+        "The UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction of an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.UARFCNDL";
+    }
+    leaf cpichrscp {
+      type int64;
+      units "dBm";
+      description
+        "Received signal level in {{units}} of the CPICH channel. (Ref. 3GPP TS 25.133)";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHRSCP";
+    }
+    leaf cpich-ec-no {
+      type int64;
+      units "dB";
+      description
+        "Measured EcNo. (energy per chip to interference power density) in {{units}} received in the downlink pilot channel. Actual values of the range are -24.0 {{units}} to 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.133|Section 9.1.2.3}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHEcNo";
+    }
+    leaf rssi {
+      type int64;
+      units "dBm";
+      description
+        "This measurement is for Inter-frequency handover evaluation, measured in total {{units}} in the band. {{bibref|3GPP-TS.25.133|Section9.1.3}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.RSSI";
+    }
+    leaf primary-scrambling-code {
+      type uint16 {
+        range "0..511";
+      }
+      description
+        "Primary scrambling code.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.PrimaryScramblingCode";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
+  }
+
+  grouping rem-umts-wcdma-cell-bcch-g {
+    description
+      "Table containing the system information broadcast in the BCCH logical channel.";
+    leaf plmn-type {
+      type enumeration {
+        enum "gsm-map" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - GSM-MAP";
+        }
+        enum "ansi-41" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - ANSI-41";
+        }
+      }
+      description
+        "Type of Public Land Mobile Network (PLMN).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNID";
+    }
+    leaf lac {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Location Area Code (LAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "Routing Area Code (RAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the RAI (Routing Area ID) {{bibref|3GPP-TS.23.003}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.RAC";
+    }
+    leaf cell-id {
+      type uint32 {
+        range "0..268435455";
+      }
+      description
+        "Cell Identity as defined in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.2}}. {{bibref|3GPP-TS.24.008}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CellID";
+    }
+    leaf pcpich-tx-power {
+      type int64;
+      description
+        "Primary Common Pilot Channel (CPICH) power level on SIB 5/6 {{bibref|3GPP-TS.25.331|Section10.3.6.55}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PCPICHTxPower";
+    }
+    leaf csg-indicator {
+      type boolean;
+      description
+        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting closed access to the CSG cell. If {{false}} the CSG-indicator IE is absent, reflecting the access mode as \"not a closed-access\". {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGIndicator";
+    }
+    leaf csgid {
+      type uint32 {
+        range "0..134217727";
+      }
+      description
+        "Defines the Closed Subscriber Group of the Access Control List. FAP broadcasts this CSG ID in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.8}} depending on the AccessMode.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGID";
+    }
+    leaf-list uarfcndl-list {
+      type uint16 {
+        range "0..16383";
+      }
+      max-elements "128";
+      description
+        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN} in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN} in the UL direction is derived based on the fixed offset applicable for the frequency band.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.UARFCNDLList";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
+  }
+
+  grouping rem-umts-wcdma-cell-bcch-csgpsc-split-info-g {
+    description
+      "This object contains parameters relating to the Primary Scambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
+    leaf start-psc-range1-coefficient {
+      type uint8 {
+        range "0..63";
+      }
+      description
+        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.StartPSCRange1Coefficient";
+    }
+    leaf number-of-ps-cs {
+      type enumeration {
+        enum "5" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 5";
+        }
+        enum "10" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 10";
+        }
+        enum "15" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 15";
+        }
+        enum "20" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 20";
+        }
+        enum "30" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 30";
+        }
+        enum "40" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 40";
+        }
+        enum "50" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 50";
+        }
+        enum "64" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 64";
+        }
+        enum "80" {
+          value 9;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 80";
+        }
+        enum "120" {
+          value 10;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 120";
+        }
+        enum "160" {
+          value 11;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 160";
+        }
+        enum "256" {
+          value 12;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 256";
+        }
+        enum "alltherest" {
+          value 13;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
+        }
+        enum "spare3" {
+          value 14;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare3";
+        }
+        enum "spare2" {
+          value 15;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare2";
+        }
+        enum "spare1" {
+          value 16;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare1";
+        }
+      }
+      description
+        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs";
+    }
+    leaf psc-range2-offset {
+      type uint8 {
+        range "0..63";
+      }
+      description
+        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.PSCRange2Offset";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
+  }
+
+  grouping rem-umts-wcdma-cell-bcch-reference-position-g {
+    description
+      "This object defines parameters related to the surface point of the ellipsoid. {{bibref|3GPP-TS.23.032|Section 5}} It is characterized by the co-ordinates of an ellipsoid point with altitude, distances, and an angle of orientation. This information is used to refer to a point on the Earth's surface, or close to the Earth's surface, with the same longitude and latitude.";
+    leaf latitude {
+      type int64;
+      description
+        "This parameter specifies the latitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, north of the equator. The negative value signifies the direction, south of the equator. Range is from: 90.00.00' South (-90,000,000) to 90.00.00' North (90,000,000). Example: A latitude of 13.19.43' N would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). Latitude of 50.00.00' S would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Latitude";
+    }
+    leaf longitude {
+      type int64;
+      description
+        "This parameter specifies the longitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, east of the prime meridian. The negative value signifies the direction, west of the prime meridian. Range is from: 180.00.00' West (-180,000,000) to 180.00.00' East (180,000,000). Example: A longitude of 13.19.43' E would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). A longitude of 50.00'0'' W would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Longitude";
+    }
+    leaf uncertainty-semi-major {
+      type uint8 {
+        range "0..127";
+      }
+      description
+        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMajor";
+    }
+    leaf uncertainty-semi-minor {
+      type uint8 {
+        range "0..127";
+      }
+      description
+        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMinor";
+    }
+    leaf orientation-of-major-axis {
+      type uint8 {
+        range "0..89";
+      }
+      description
+        "The Information Element (IE) value 'N' is derived by this formula: 2N <= a < 2(N+1) Where 'a' is the orientation in degrees (0..179).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.OrientationOfMajorAxis";
+    }
+    leaf confidence {
+      type uint8 {
+        range "0..100";
+      }
+      units "percent";
+      description
+        "The degree of confidence in the ellipsoid's points expressed in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Confidence";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
+  }
+
+  grouping rem-umts-gsm-g {
+    description
+      "This object contains parameters relating to GSM REM capabilities.";
+    leaf in-service-handling {
+      type enumeration {
+        enum "immediate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Immediate";
+        }
+        enum "delayed" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Delayed";
+        }
+      }
+      default "immediate";
+      config false;
+      description
+        "FAP REM behavior with respect to ongoing active connections.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling";
+    }
+    leaf scan-on-boot {
+      type boolean;
+      default "true";
+      config false;
+      description
+        "Enables or disables Radio Environment Measurement during the FAP start up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanOnBoot";
+    }
+    leaf scan-periodically {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanPeriodically";
+    }
+    leaf periodic-interval {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicInterval";
+    }
+    leaf periodic-time {
+      type yang:date-and-time;
+      config false;
+      description
+        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicTime";
+    }
+    leaf-list remplmn-list {
+      type string {
+        length "0..6";
+      }
+      config false;
+      description
+        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5. If {{empty}} no specific PLMN ID is provided, meaning that the FAP is required to report all available PLMN IDs. If a list is provided, the FAP is expected to limit the REM measurement to the PLMN(s) specified in this list only and ignore others even if they are detected.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMPLMNList";
+    }
+    leaf-list rem-band-list {
+      type enumeration {
+        enum "t-gsm380" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM380";
+        }
+        enum "t-gsm410" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM410";
+        }
+        enum "gsm450" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM450";
+        }
+        enum "gsm480" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM480";
+        }
+        enum "gsm710" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM710";
+        }
+        enum "gsm750" {
+          value 6;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM750";
+        }
+        enum "t-gsm810" {
+          value 7;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM810";
+        }
+        enum "gsm850" {
+          value 8;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM850";
+        }
+        enum "p-gsm900" {
+          value 9;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - P-GSM900";
+        }
+        enum "e-gsm900" {
+          value 10;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - E-GSM900";
+        }
+        enum "r-gsm900" {
+          value 11;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - R-GSM900";
+        }
+        enum "t-gsm900" {
+          value 12;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM900";
+        }
+        enum "dcs1800" {
+          value 13;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - DCS1800";
+        }
+        enum "pcs1900" {
+          value 14;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - PCS1900";
+        }
+      }
+      config false;
+      description
+        "{{list}} Each item is a GSM Band to measure. {{enum}} If {{empty}} then no specific GSM band is provided, meaning that the FAP MUST scan all bands. If a list is provided, the FAP is expected to limit the REM measurement to the band(s) specified in this list only and ignore others even if they are detected.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList";
+    }
+    leaf-list arfcn-list {
+      type string;
+      config false;
+      max-elements "64";
+      description
+        "{{list}} Each item is a GSM ARFCN to measure. If {{empty}} then no specific ARFCN is provided, meaning that the FAP is required to scan all ARFCNs. If a list is provided, the FAP is expected to limit the REM measurement to the ARFCN(s) specified in this list only and ignore others even if they are detected.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ARFCNList";
+    }
+    leaf scan-timeout {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanTimeout";
+    }
+    leaf scan-status {
+      type enumeration {
+        enum "indeterminate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Indeterminate";
+        }
+        enum "in-progress" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - InProgress";
+        }
+        enum "success" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Success";
+        }
+        enum "error" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error";
+        }
+        enum "error-timeout" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error_TIMEOUT";
+        }
+      }
+      description
+        "Indicates the current status of this scan.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus";
+    }
+    leaf error-details {
+      type string {
+        length "0..256";
+      }
+      description
+        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ErrorDetails";
+    }
+    leaf last-scan-time {
+      type yang:date-and-time;
+      description
+        "The time of the last GSM radio environment measurement.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.LastScanTime";
+    }
+    leaf max-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries allowed in the {{object|.REM.UMTS.GSM.Cell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.MaxCellEntries";
+    }
+    leaf cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.CellNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.";
+  }
+
+  grouping rem-umts-gsm-cell-g {
+    description
+      "Table indicating the components of the discovered cells.";
+    leaf band-indicator {
+      type enumeration {
+        enum "gsm 850" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 850";
+        }
+        enum "gsm 900" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 900";
+        }
+        enum "dcs 1800" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - DCS 1800";
+        }
+        enum "pcs 1900" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - PCS 1900";
+        }
+      }
+      description
+        "Indicates how to interpret the BCCH ARFCN.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator";
+    }
+    leaf arfcn {
+      type uint16 {
+        range "0..1023";
+      }
+      description
+        "Absolute Radio Frequency Channel Number (ARFCN) {{bibref|3GPP-TS.05.05}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.ARFCN";
+    }
+    leaf bsic {
+      type uint8 {
+        range "0..63";
+      }
+      description
+        "Base Station Identity Code {{bibref|3GPP-TS.03.03}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BSIC";
+    }
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.PLMNID";
+    }
+    leaf lac {
+      type uint16 {
+        range "1..65535";
+      }
+      description
+        "Location Area Code (LAC) as defined in SIB1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.LAC";
+    }
+    leaf rac {
+      type uint8 {
+        range "0..255";
+      }
+      description
+        "Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RAC";
+    }
+    leaf ci {
+      type uint16 {
+        range "0..63535";
+      }
+      description
+        "Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.CI";
+    }
+    leaf rssi {
+      type int64;
+      units "dBm";
+      description
+        "Received signal level in {{units}} of the BCCH carrier.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RSSI";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
+  }
+
+  grouping rem-lte-g {
+    description
+      "This object contains parameters relating to radio environment measurement capabilities for the LTE system.";
+    leaf in-service-handling {
+      type enumeration {
+        enum "immediate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Immediate";
+        }
+        enum "delayed" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Delayed";
+        }
+      }
+      default "immediate";
+      config false;
+      description
+        "FAP REM behavior with respect to ongoing active connections.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling";
+    }
+    leaf scan-on-boot {
+      type boolean;
+      default "true";
+      config false;
+      description
+        "Enables or disables Radio Environment Measurement during the FAP start up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanOnBoot";
+    }
+    leaf scan-periodically {
+      type boolean;
+      default "false";
+      config false;
+      description
+        "Enable Periodic Radio Environment Measurement on LTE EUTRAN bands.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanPeriodically";
+    }
+    leaf periodic-interval {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicInterval";
+    }
+    leaf periodic-time {
+      type yang:date-and-time;
+      config false;
+      description
+        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicTime";
+    }
+    leaf-list remplmn-list {
+      type string;
+      config false;
+      max-elements "32";
+      description
+        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMPLMNList";
+    }
+    leaf-list rem-band-list {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "{{list}} Each item is a LTE Band to measure. Corresponds to frequency band indicator defined in {{bibref|3GPP-TS.36.101|Table 5.5-1}}. If {{empty}} then no specific LTE band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMBandList";
+    }
+    leaf-list eutra-carrier-arfcndl-list {
+      type string;
+      config false;
+      max-elements "64";
+      description
+        "{{list}} Each entry is a EUTRA ARFCN in the DL direction to measure. Corrsponds to the parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If {{empty}}, then no specific EUTRA ARFCN is provided, meaning that the FAP is required to scan all ARFCNs that it is aware of.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.EUTRACarrierARFCNDLList";
+    }
+    leaf scan-timeout {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanTimeout";
+    }
+    leaf scan-status {
+      type enumeration {
+        enum "indeterminate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Indeterminate";
+        }
+        enum "in-progress" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - InProgress";
+        }
+        enum "success" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Success";
+        }
+        enum "error" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error";
+        }
+        enum "error-timeout" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error_TIMEOUT";
+        }
+      }
+      description
+        "Indicates the current status of this scan.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus";
+    }
+    leaf error-details {
+      type string {
+        length "0..256";
+      }
+      description
+        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ErrorDetails";
+    }
+    leaf last-scan-time {
+      type yang:date-and-time;
+      description
+        "The time of the last LTE system radio environment measurement.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.LastScanTime";
+    }
+    leaf max-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCellEntries";
+    }
+    leaf cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CellNumberOfEntries";
+    }
+    leaf max-carrier-meas-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.LTE.CarrierMeas.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCarrierMeasEntries";
+    }
+    leaf carrier-meas-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeasNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.";
+  }
+
+  grouping rem-lte-cell-g {
+    leaf rem-lte-cell-key {
+      type string;
+      description
+        "Key value for this object, which could be an item of a list.";
+    }
+    description
+      "Table indicating the components of the discovered cells.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.";
+  }
+
+  grouping rem-lte-cell-rf-g {
+    description
+      "Table indicating the RF aspect of the discovered cells.";
+    leaf eutra-carrier-arfcn {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.EUTRACarrierARFCN";
+    }
+    leaf phy-cell-id {
+      type uint16 {
+        range "0..503";
+      }
+      description
+        "Physical cell ID of the detected EUTRAN cell, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.PhyCellID";
+    }
+    leaf rsrp {
+      type int64;
+      units "dBm";
+      description
+        "Received RSRP level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.1}}. The reporting range is specified in {{bibref|3GPP-TS.36.133|Section 9.1.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRP";
+    }
+    leaf rsrq {
+      type int64;
+      units "dB";
+      description
+        "Received RSRQ level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. Actual measured values range between -24.0 {{units}} and 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 10 yields the actual measured value. Only values in multiple of 5 are valid.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRQ";
+    }
+    leaf rssi {
+      type int64;
+      units "dBm";
+      description
+        "E-UTRA Carrier Received Signal Strength Indicator (RSSI), specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. It comprises the linear average of the total received power (in [W]) observed only in OFDM symbols containing reference symbols for antenna port 0, in the measurement bandwidth, over N number of resource blocks by the UE from all sources, including co-channel serving and non-serving cells, adjacent channel interference, thermal noise etc.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSSI";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.";
+  }
+
+  grouping rem-lte-cell-bcch-g {
+    description
+      "Table containing the system information broadcast in the BCCH logical channel.";
+    leaf dl-bandwidth {
+      type uint8 {
+        range "0 | 5 | 6 | 15 | 25 | 50 | 75 | 100";
+      }
+      units "resource blocks";
+      description
+        "Downlink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter dl_Bandwidth in Master Information Block in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.DLBandwidth";
+    }
+    leaf ul-bandwidth {
+      type uint8 {
+        range "0 | 5 | 6 | 15 | 25 | 50 | 75 | 100";
+      }
+      units "resource blocks";
+      description
+        "Uplink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.ULBandwidth";
+    }
+    leaf rs-tx-power {
+      type int64;
+      units "dBm";
+      description
+        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.RSTxPower";
+    }
+    leaf tac {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "Tracking Area Code that is common for all the PLMNs listed. Corresponds to trackingAreaCode as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.TAC";
+    }
+    leaf cell-id {
+      type uint32 {
+        range "0..268435455";
+      }
+      description
+        "Defines the cell identify, defines as a 28-bit binary number. Corresponds to cellIdentity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2 and Section 6.3.4}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellID";
+    }
+    leaf cell-barred {
+      type boolean;
+      description
+        "Indicates whether the cell is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to cellBarred as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and {{bibref|3GPP-TS.36.304}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellBarred";
+    }
+    leaf csg-indication {
+      type boolean;
+      description
+        "Indicates whether CSG is used in this cell or not. If {{true}}, the UE is only allowed to access the cell if the CSG identity matches an entry in the allowed CSG list that the UE has stored. Corresponds to csg-Indication as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIndication";
+    }
+    leaf csg-identity {
+      type uint32 {
+        range "0..134217727";
+      }
+      description
+        "Defines the CSG ID value if {{param|CSGIndication}} parameter indicates that CSG is used in this cell. Corresponds to csg-Identity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIdentity";
+    }
+    leaf max-plmn-list-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.MaxPLMNListEntries";
+    }
+    leaf plmn-list-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNListNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
+  }
+
+  grouping rem-lte-cell-bcch-plmn-list-g {
+    description
+      "Table containing the PLMN list in the system information broadcast in the BCCH logical channel. Correspnds to plmn-IdentityList as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs.";
+    leaf plmnid {
+      type string {
+        length "0..6";
+      }
+      description
+        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.PLMNID";
+    }
+    leaf cell-reserved-for-operator-use {
+      type boolean;
+      description
+        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.CellReservedForOperatorUse";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
+  }
+
+  grouping rem-lte-carrier-meas-g {
+    description
+      "Table indicating the measurement of the discovered carrier. The information stored in this object is strictly in the physical layer level and may not necessarily be associated with any particular E-UTRAN cell (e.g. interference level generated by sources other than E-UTRAN cell).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the CarrierMeas entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Alias";
+    }
+    leaf carrier-arfcndl {
+      type int64;
+      units "MHz";
+      description
+        "Lower bound of the EUTRA ARFCN as specified in {{bibref|3GPP-TS.36.101|Section 5.7.3}} in the DL direction that is requested to measure. Unit in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierARFCNDL";
+    }
+    leaf carrier-ch-width {
+      type int64;
+      units "ARFCN";
+      description
+        "Number of {{units}} in DL direction, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}, that is requested to measure. The range bounded by {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param}}) as the upper bound expresses the total carrier frequency range to be measured.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierChWidth";
+    }
+    leaf carrier-rssi {
+      type int64;
+      units "ARFCN";
+      description
+        "Received Signal Strength Indicator (RSSI) as specified in {{bibref|3GPP-TS.36.214|Sec 5.1.3}} over the carrier frequency range from {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param|CarrierChWidth}}) as the upper bound.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierRSSI";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
+  }
+
+  grouping rem-cdma2000-g {
+    description
+      "This object contains parameters relating to radio environment measurement capabilities for the CDMA2000 system.";
+    leaf in-service-handling {
+      type enumeration {
+        enum "immediate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Immediate";
+        }
+        enum "delayed" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Delayed";
+        }
+      }
+      config false;
+      description
+        "FAP REM behavior with respect to ongoing active connections. {{enum}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling";
+    }
+    leaf scan-on-boot {
+      type boolean;
+      config false;
+      description
+        "Enables or disables Radio Environment Measurement during the FAP start up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanOnBoot";
+    }
+    leaf scan-now {
+      type boolean;
+      config false;
+      description
+        "Directs FAP to perform radio environment measurements immediately (but respecting the setting of {{param|InServiceHandling}}) and report back. After performing the action, the FAP resets the ScanNow value to \"0\" ({{false}}).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanNow";
+    }
+    leaf return-timer {
+      type uint64 {
+        range "1..max";
+      }
+      units "seconds";
+      config false;
+      description
+        "Time in {{units}} within which the action should be performed by the FAP. Only applies if {{param|InServiceHandling}} is set to Delayed.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReturnTimer";
+    }
+    leaf scan-periodically {
+      type boolean;
+      config false;
+      description
+        "Enables periodic reporting of radio environment measurements.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanPeriodically";
+    }
+    leaf periodic-interval {
+      type uint64 {
+        range "1..max";
+      }
+      units "seconds";
+      config false;
+      description
+        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicInterval";
+    }
+    leaf periodic-time {
+      type yang:date-and-time;
+      config false;
+      description
+        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicTime";
+    }
+    leaf report-overheads {
+      type enumeration {
+        enum "all" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - All";
+        }
+        enum "one-x" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - OneX";
+        }
+        enum "hrpd" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - HRPD";
+        }
+        enum "none" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - None";
+        }
+      }
+      config false;
+      description
+        "If {{param}} is set to {{enum|All}}, the FAP shall report the overheads from the sectors as well.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads";
+    }
+    leaf scan-timeout {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanTimeout";
+    }
+    leaf scan-status {
+      type enumeration {
+        enum "indeterminate" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Indeterminate";
+        }
+        enum "in-progress" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - InProgress";
+        }
+        enum "success" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Success";
+        }
+        enum "error" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error";
+        }
+        enum "error-timeout" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error_TIMEOUT";
+        }
+      }
+      description
+        "Indicates the current status of this scan.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus";
+    }
+    leaf error-details {
+      type string {
+        length "0..256";
+      }
+      description
+        "Provides more detail when the {{param|ScanStatus}} is either \"Error\" or \"Error_TIMEOUT\".";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ErrorDetails";
+    }
+    leaf last-scan-time {
+      type yang:date-and-time;
+      description
+        "The time of the last system radio environment measurement.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.LastScanTime";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.";
+  }
+
+  grouping rem-cdma2000-one-x-g {
+    description
+      "This object contains parameters relating to radio environment measurement capabilities for the 1x system.";
+    leaf max-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Cell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxCellEntries";
+    }
+    leaf cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.CellNumberOfEntries";
+    }
+    leaf max-channel-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Channel.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxChannelEntries";
+    }
+    leaf channel-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.ChannelNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.";
+  }
+
+  grouping rem-cdma2000-one-x-channel-g {
+    description
+      "REM specific configuration and reporting.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Alias";
+    }
+    leaf sniffing-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      description
+        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingBandClass";
+    }
+    leaf sniffing-channel-number {
+      type uint16 {
+        range "0..2016";
+      }
+      description
+        "The Radio Frequency Channel Number (RFCN) in the forward direction.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingChannelNumber";
+    }
+    leaf-list pn-list {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.PNList";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
+  }
+
+  grouping rem-cdma2000-one-x-cell-g {
+    leaf rem-cdma2000-one-x-cell-key {
+      type string;
+      description
+        "Key value for this object, which could be an item of a list.";
+    }
+    description
+      "Table indicating the components of the discovered cells.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
+  }
+
+  grouping rem-cdma2000-one-x-cell-rf-g {
+    description
+      "RF REM results for each detected cell.";
+    leaf band {
+      type int64;
+      description
+        "CDMA band for the reported cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Band";
+    }
+    leaf rfcnfl {
+      type uint16 {
+        range "0..2016";
+      }
+      description
+        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.RFCNFL";
+    }
+    leaf io {
+      type int64;
+      units "dBm";
+      description
+        "The total received power spectral density in {{units}}, including signal and interference.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Io";
+    }
+    leaf p-ilot-pn {
+      type uint16 {
+        range "0..511";
+      }
+      units "64 PN chips";
+      description
+        "Pilot PN Offset (in units of {{units}}).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPN";
+    }
+    leaf p-ilot-pn-phase {
+      type uint64;
+      units "chips";
+      description
+        "Pilot PN phase in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPNPhase";
+    }
+    leaf pilot-strength-ecp {
+      type int64;
+      units "dBm";
+      description
+        "The strength estimate of the received pilot energy per chip, Ecp, in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcp";
+    }
+    leaf pilot-strength-ecp-io {
+      type int64;
+      units "dB";
+      description
+        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcpIo";
+    }
+    leaf overheads-available {
+      type boolean;
+      description
+        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.OverheadsAvailable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
+  }
+
+  grouping rem-cdma2000-one-x-cell-control-channel-g {
+    description
+      "Table containing information broadcast on control channel.";
+    leaf sid {
+      type int64;
+      description
+        "System identification. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.SID";
+    }
+    leaf nid {
+      type int64;
+      description
+        "Network identification. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.NID";
+    }
+    leaf regzone {
+      type int64;
+      description
+        "Registration Zone. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.REGZONE";
+    }
+    leaf baselat {
+      type int64;
+      description
+        "Basestation latitude. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELAT";
+    }
+    leaf baselong {
+      type int64;
+      description
+        "Basestation longtitude. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELONG";
+    }
+    leaf mcc {
+      type int64;
+      description
+        "Mobile Country Code. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MCC";
+    }
+    leaf mncimsi1112 {
+      type int64;
+      description
+        "the 11th and 12th digits of IMSI, i.e., Mobile Network Code. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MNCIMSI1112";
+    }
+    leaf baseid {
+      type int64;
+      description
+        "Basestation identification. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASEID";
+    }
+    leaf apid {
+      type string {
+        length "0..32";
+      }
+      description
+        "Access Point Identification. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APID";
+    }
+    leaf apidmask {
+      type int64;
+      description
+        "Access Point Identification Mask. Set to zero if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDMASK";
+    }
+    leaf apidtext {
+      type string {
+        length "0..256";
+      }
+      description
+        "Access Point Identification Text. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDTEXT";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
+  }
+
+  grouping rem-cdma2000-hrpd-g {
+    description
+      "This object contains parameters relating to radio environment measurement capabilities for the HRPD system.";
+    leaf max-cell-entries {
+      type uint64;
+      description
+        "The maximum number of entries available in the {{object|.REM.CDMA2000.HRPD.Cell.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxCellEntries";
+    }
+    leaf cell-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.CellNumberOfEntries";
+    }
+    leaf max-channel-entries {
+      type uint64;
+      description
+        "The maximum number of entries in {{object|.REM.CDMA2000.HRPD.Channel.{i}.}} table.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxChannelEntries";
+    }
+    leaf channel-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.ChannelNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.";
+  }
+
+  grouping rem-cdma2000-hrpd-channel-g {
+    description
+      "REM specific configuration and reporting.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Alias";
+    }
+    leaf sniffing-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      description
+        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingBandClass";
+    }
+    leaf sniffing-channel-number {
+      type uint16 {
+        range "0..2016";
+      }
+      description
+        "The Radio Frequency Channel Number (RFCN) in the FL direction.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingChannelNumber";
+    }
+    leaf-list pn-list {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment>. If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.PNList";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
+  }
+
+  grouping rem-cdma2000-hrpd-cell-g {
+    leaf rem-cdma2000-hrpd-cell-key {
+      type string;
+      description
+        "Key value for this object, which could be an item of a list.";
+    }
+    description
+      "Table indicating the components of the discovered cells.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
+  }
+
+  grouping rem-cdma2000-hrpd-cell-rf-g {
+    description
+      "RF REM results for each detected cell.";
+    leaf band {
+      type int64;
+      description
+        "CDMA band for the reported cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Band";
+    }
+    leaf rfcnfl {
+      type uint16 {
+        range "0..2016";
+      }
+      description
+        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.RFCNFL";
+    }
+    leaf io {
+      type int64;
+      units "dBm";
+      description
+        "The total received power spectral density in {{units}}, including signal and interference.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Io";
+    }
+    leaf p-ilot-pn {
+      type uint16 {
+        range "0..511";
+      }
+      units "64 PN chips";
+      description
+        "Pilot PN Offset (in units of {{units}}).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPN";
+    }
+    leaf p-ilot-pn-phase {
+      type uint64;
+      units "chips";
+      description
+        "Pilot PN phase in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPNPhase";
+    }
+    leaf pilot-strength-ecp {
+      type int64;
+      units "dBm";
+      description
+        "The strength estimate of the received pilot energy per chip in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcp";
+    }
+    leaf pilot-strength-ecp-io {
+      type int64;
+      units "dB";
+      description
+        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcpIo";
+    }
+    leaf overheads-available {
+      type boolean;
+      description
+        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.OverheadsAvailable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
+  }
+
+  grouping rem-cdma2000-hrpd-cell-control-channel-g {
+    description
+      "Table containing information braodcast on control channel.";
+    leaf color-code {
+      type int64;
+      description
+        "The color code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.ColorCode";
+    }
+    leaf sector-id {
+      type binary {
+        length "16";
+      }
+      description
+        "The sector ID of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SectorID";
+    }
+    leaf subnet-mask {
+      type int64;
+      units "bits";
+      description
+        "The length of the subnet mask in {{units}} for the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SubnetMask";
+    }
+    leaf country-code {
+      type int64;
+      description
+        "The country code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.CountryCode";
+    }
+    leaf latitude {
+      type int64;
+      units "0.25 arc seconds";
+      description
+        "The reported lattitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying North latitudes in the range -1296000 to 1296000 inclusive corresponding to a range of -90 to +90) Refer to {{bibref|3GPP2-C.S0024}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Latitude";
+    }
+    leaf longitude {
+      type int64;
+      units "0.25 arc seconds";
+      description
+        "The reported longitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying East longitude in the range -2592000 to 2592000 inclusive (corresponding to a range of -180 to +180). Refer to {{bibref|3GPP2-C.S0024}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Longitude";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
+  }
+
+  grouping rem-cdma2000-macro-timing-g {
+    description
+      "Parameters for controlling CDMA2000 system timing derived from macro system sniffing.";
+    leaf admin-state {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "This is the Admin State of Macro Timing. Lock means MacroTiming feature is Enabled. Unlock means MacroTiming feature is disabled. 0 - Lock (Enabled), 1 - Unlock (Disabled).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.AdminState";
+    }
+    leaf tracking-channel-number {
+      type uint64;
+      description
+        "Channel number of Macro Base Station currently used for MacroTiming.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingChannelNumber";
+    }
+    leaf tracking-band-class {
+      type uint8 {
+        range "0..31";
+      }
+      description
+        "BandClass of Macro Base Station currently used for MacroTiming.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingBandClass";
+    }
+    leaf-list tracking-pn-offset {
+      type string {
+        length "0..256";
+      }
+      description
+        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips of a Macro Base Station currently used for MacroTiming.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingPNOffset";
+    }
+    leaf timing-source {
+      type uint8 {
+        range "0..1";
+      }
+      description
+        "This parameter indicates the timing source for the FAP: 0 - GPS 1 - Macro Timing The other read-only parameters in this object only have valid values when timingsource is set to 1.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TimingSource";
+    }
+    leaf channel-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.ChannelNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.";
+  }
+
+  grouping rem-cdma2000-macro-timing-channel-g {
+    description
+      "Object used to configure list of channels to be used for Macto Timing.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the {{object}} entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "1..64";
+      }
+      description
+        "{{datatype|expand}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Alias";
+    }
+    leaf air-interface-type {
+      type uint8 {
+        range "0..1";
+      }
+      config false;
+      description
+        "Air interface type of the configured Band class and Channel. 0 - 1x, 1 - HRPD.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.AirInterfaceType";
+    }
+    leaf band-class {
+      type uint8 {
+        range "0..31";
+      }
+      description
+        "Bandclass of the Macro timing channel.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.BandClass";
+    }
+    leaf channel-number {
+      type uint64;
+      description
+        "Macro timing acquisition channel.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.ChannelNumber";
+    }
+    leaf priority {
+      type uint64;
+      config false;
+      description
+        "Priority of the channle to use for acquisition. FAP should prioritize lower values over higher.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Priority";
+    }
+    leaf-list pn-list {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.PNList";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
+  }
+
+  grouping transport-g {
+    description
+      "This object contains parameters relating to the transport.";
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.";
+  }
+
+  grouping transport-sip-g {
+    description
+      "This object contains parameters relating to SIP as a transport protocol. SIP is defined in {{bibref|RFC3261}}.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the whole SIP object and allows the setup or release of SIP associations and their related streams.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.Enable";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.";
+  }
+
+  grouping transport-sip-fcs-g {
+    description
+      "This object models SIP Femtocell Convergence Server (FCS) parameters.";
+    leaf fcsuri {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The request URI for MESSAGE method sent to Femtocell Convergence Server (FCS). The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.FCSURI";
+    }
+    leaf out-going-proxy-uri {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The request URI for Outgoing Proxy. The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.OutGoingProxyURI";
+    }
+    leaf p-access-net-info-header {
+      type string {
+        length "0..256";
+      }
+      description
+        "This string will be populated as the value for P-Access-Network-Info header. This header is generated by the device. See {{bibref|3GPP2-X.S0059}} and {{bibref|RFC3455}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.PAccessNetInfoHeader";
+    }
+    leaf realm {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "The FQDN or IP Address representing the Home Domain of the device. The request URI for REGISTER will be formed by prefixing \"sip:\" to this value.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.Realm";
+    }
+    leaf impu {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The \"IP Multimedia Public User\" (IMPU) Identity.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPU";
+    }
+    leaf impi {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "The \"IP Multimedia Private Identity\" (IMPI). This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPI";
+    }
+    leaf sip-password {
+      type string {
+        length "0..32";
+      }
+      config false;
+      description
+        "Password to Authenticate the IMS core. This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPPassword";
+    }
+    leaf-list sip-auth-capability {
+      type enumeration {
+        enum "tna" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - TNA";
+        }
+        enum "sip-digest" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - SIPDigest";
+        }
+      }
+      description
+        "Represents the SIP authentication mechanisms supported by this device.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability";
+    }
+    leaf sip-auth-method {
+      type string {
+        length "0..256";
+      }
+      config false;
+      description
+        "Represents the authentication method used by this device for SIP registration. If value is {{enum|SIPDigest}}, the {{param|SIPPassword}} MUST not be {{empty}}. If value is {{enum|TNA}}, {{param|SIPPassword}} and {{param|IMPI}} are ignored.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthMethod";
+    }
+    leaf sip-local-port {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Local port number for initiating SIP traffic.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPLocalPort";
+    }
+    leaf rtp-port-low-limit {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "The low limit of port number for originating and receiving RTP/RTCP traffic.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortLowLimit";
+    }
+    leaf rtp-port-high-limit {
+      type uint16 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "The high limit of port number for originating and receiving RTP/RTCP traffic.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortHighLimit";
+    }
+    leaf sip-reg-expiry {
+      type uint64;
+      config false;
+      description
+        "SIP registration expiry value, as defined in {{bibref|RFC3261}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPRegExpiry";
+    }
+    leaf sip-session-expiry {
+      type uint64 {
+        range "90..max";
+      }
+      units "seconds";
+      default "1800";
+      config false;
+      description
+        "SIP session timer expiry value, in {{units}}, as defined in {{bibref|RFC4028}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPSessionExpiry";
+    }
+    leaf-list emergency-numbers-list {
+      type string {
+        length "0..64";
+      }
+      config false;
+      description
+        "Indicates the dialed digit pattern matching strings used to determine if the call is an emergency call that MAY bypass access control and receive priority treatment.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.EmergencyNumbersList";
+    }
+    leaf timer-t1 {
+      type uint64 {
+        range "1..max";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Value of SIP timer T1, in {{units}}, as defined in {{bibref|RFC3261}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT1";
+    }
+    leaf timer-t2 {
+      type uint64 {
+        range "1..max";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Value of SIP timer T2, in {{units}}, as defined in {{bibref|RFC3261}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT2";
+    }
+    leaf timer-t4 {
+      type uint64 {
+        range "1..max";
+      }
+      units "milliseconds";
+      config false;
+      description
+        "Value of SIP timer T4, in {{units}}, as defined in {{bibref|RFC3261}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT4";
+    }
+    leaf t3210 {
+      type uint8 {
+        range "1..20";
+      }
+      units "seconds";
+      config false;
+      description
+        "This value specifies how much time to wait, in {{units}}, before time out on location update accept/reject. See {{bibref|3GPP2-A.S0014}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.T3210";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.";
+  }
+
+  grouping transport-sctp-g {
+    description
+      "This object contains parameters relating to SCTP as a transport protocol. SCTP is defined in {{bibref|RFC4960}} and {{bibref|RFC3873}}.";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enables or disables the whole SCTP object and allows the setup or release of SCTP associations and their related streams.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Enable";
+    }
+    leaf hb-interval {
+      type uint64 {
+        range "1..max";
+      }
+      units "seconds";
+      default "30";
+      config false;
+      description
+        "Heartbeat interval in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.HBInterval";
+    }
+    leaf max-association-retransmits {
+      type uint64;
+      default "10";
+      config false;
+      description
+        "Maximum number of consecutive retransmissions to a peer before an endpoint considers that the peer is unreachable and closes the association.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxAssociationRetransmits";
+    }
+    leaf max-init-retransmits {
+      type uint64;
+      default "8";
+      config false;
+      description
+        "Number of retransmission per connection-attempt.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxInitRetransmits";
+    }
+    leaf max-path-retransmits {
+      type uint64;
+      default "5";
+      config false;
+      description
+        "Maximum retransmission per destination address.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxPathRetransmits";
+    }
+    leaf rto-initial {
+      type uint64;
+      units "milliseconds";
+      default "3000";
+      config false;
+      description
+        "Initial value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOInitial";
+    }
+    leaf rto-max {
+      type uint64;
+      units "milliseconds";
+      default "6000";
+      config false;
+      description
+        "Maximum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMax";
+    }
+    leaf rto-min {
+      type uint64;
+      units "milliseconds";
+      default "1000";
+      config false;
+      description
+        "Minimum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission. The value of this parameter MUST be lower than or equal to {{param|RTOMax}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMin";
+    }
+    leaf val-cookie-life {
+      type uint64;
+      units "milliseconds";
+      default "60000";
+      config false;
+      description
+        "Valid cookie life in the 4-way start-up handshake procedure in {{units}}.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ValCookieLife";
+    }
+    leaf out-of-blues {
+      type uint64;
+      description
+        "The number of correctly formed SCTP packets, including the proper checksum, but for which the receiver was unable to identify an appropriate association.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOfBlues";
+    }
+    leaf checksum-errors {
+      type uint64;
+      description
+        "The number of SCTP packets received with an invalid checksum.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ChecksumErrors";
+    }
+    leaf out-ctrl-chunks {
+      type uint64;
+      description
+        "The number of SCTP control chunks sent (retransmissions are not included).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutCtrlChunks";
+    }
+    leaf out-order-chunks {
+      type uint64;
+      description
+        "The number of SCTP ordered data chunks sent (retransmissions are not included).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOrderChunks";
+    }
+    leaf out-unorder-chunks {
+      type uint64;
+      description
+        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) sent (retransmissions are not included).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutUnorderChunks";
+    }
+    leaf in-ctrl-chunks {
+      type uint64;
+      description
+        "The number of SCTP control chunks received (no duplicate chunks included).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InCtrlChunks";
+    }
+    leaf in-order-chunks {
+      type uint64;
+      description
+        "The number of SCTP ordered data chunks received (no duplicate chunks included).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InOrderChunks";
+    }
+    leaf in-unorder-chunks {
+      type uint64;
+      description
+        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) received (no duplicate chunks included).";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InUnorderChunks";
+    }
+    leaf frag-usr-msgs {
+      type uint64;
+      description
+        "The number of user messages that have been sent fragmented.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.FragUsrMsgs";
+    }
+    leaf reasm-usr-msgs {
+      type uint64;
+      description
+        "The number of user messages that have been received fragmented and submitted to the reassembly process.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ReasmUsrMsgs";
+    }
+    leaf out-sctp-packs {
+      type uint64;
+      description
+        "The number of SCTP packets sent. Retransmitted DATA chunks are included.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutSCTPPacks";
+    }
+    leaf in-sctp-packs {
+      type uint64;
+      description
+        "The number of SCTP packets received. Duplicates are included.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InSCTPPacks";
+    }
+    leaf discontinuity {
+      type yang:date-and-time;
+      description
+        "The time of the last discontinuity.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Discontinuity";
+    }
+    leaf assoc-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.AssocNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.";
+  }
+
+  grouping transport-sctp-assoc-g {
+    description
+      "SCTP Association Table";
+    leaf status {
+      type enumeration {
+        enum "disabled" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Disabled";
+        }
+        enum "active" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Active";
+        }
+        enum "progressing" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Progressing";
+        }
+        enum "shutting-down" {
+          value 4;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - ShuttingDown";
+        }
+        enum "error" {
+          value 5;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Error";
+        }
+      }
+      description
+        "The status of this SCTP association entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status";
+    }
+    leaf primary-peer-address {
+      type inet:ip-address;
+      description
+        "The primary IP address of the peer SCTP association entity.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.PrimaryPeerAddress";
+    }
+    leaf local-port {
+      type uint16 {
+        range "0..63999";
+      }
+      description
+        "The local SCTP port number used for this SCTP association.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.LocalPort";
+    }
+    leaf in-streams {
+      type uint64;
+      description
+        "The number of Inbound Streams according to the negotiation at association start-up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.InStreams";
+    }
+    leaf out-streams {
+      type uint64;
+      description
+        "The number of Outbound Streams according to the negotiation at association start-up.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.OutStreams";
+    }
+    leaf start-time {
+      type yang:date-and-time;
+      description
+        "The start Time for the present SCTP association.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.StartTime";
+    }
+    leaf discontinuity {
+      type yang:date-and-time;
+      description
+        "The time of the last discontinuity.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Discontinuity";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.";
+  }
+
+  grouping transport-real-time-g {
+    description
+      "This object contains parameters relating to Real Time Transport using RTP.";
+    leaf rtcp-enable {
+      type boolean;
+      config false;
+      description
+        "Enable or disable RTCP.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RTCPEnable";
+    }
+    leaf sent-packets {
+      type uint64;
+      description
+        "The number of sent RTP packets.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.SentPackets";
+    }
+    leaf rcv-packets {
+      type uint64;
+      description
+        "The number of received RTP packets.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RcvPackets";
+    }
+    leaf bytes-sent {
+      type uint64;
+      description
+        "Total number of RTP payload bytes sent.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      description
+        "Total number of RTP payload bytes received.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesReceived";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.";
+  }
+
+  grouping transport-real-time-perf-g {
+    description
+      "This object contains performances relating to Real Time Transport using RTP.";
+    leaf lost-rcv-packets {
+      type uint64;
+      description
+        "The number of Lost RTP packets in reception.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostRcvPackets";
+    }
+    leaf lost-far-end-packets {
+      type uint64;
+      description
+        "The number of Far End Lost RTP packets.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostFarEndPackets";
+    }
+    leaf overruns {
+      type uint64;
+      description
+        "Total number of times the receive jitter buffer has overrun.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Overruns";
+    }
+    leaf underruns {
+      type uint64;
+      description
+        "Total number of times the receive jitter buffer has underrun for a CS-domain RAB.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Underruns";
+    }
+    leaf mean-rtt {
+      type uint64;
+      units "microseconds";
+      description
+        "The mean Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanRTT";
+    }
+    leaf max-rtt {
+      type uint64;
+      units "microseconds";
+      description
+        "The maximum Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxRTT";
+    }
+    leaf mean-receive-jitter {
+      type uint64;
+      units "microseconds";
+      description
+        "The mean receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanReceiveJitter";
+    }
+    leaf max-receive-jitter {
+      type uint64;
+      units "microseconds";
+      description
+        "The maximum receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxReceiveJitter";
+    }
+    leaf mean-far-end-jitter {
+      type uint64;
+      units "microseconds";
+      description
+        "The mean far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanFarEndJitter";
+    }
+    leaf max-far-end-jitter {
+      type uint64;
+      units "microseconds";
+      description
+        "The maximum far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxFarEndJitter";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.";
+  }
+
+  grouping transport-packet-g {
+    description
+      "This object contains parameters relating to Packet Transport using GTP-U.";
+    leaf echo-interval {
+      type uint64;
+      units "seconds";
+      config false;
+      description
+        "Echo interval in {{units}}. An Echo interval value of zero means echo is disabled.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.EchoInterval";
+    }
+    leaf sent-packets {
+      type uint64;
+      description
+        "The number of sent GTP-U packets.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.SentPackets";
+    }
+    leaf rcv-packets {
+      type uint64;
+      description
+        "The number of received GTP-U packets.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.RcvPackets";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.";
+  }
+
+  grouping transport-security-g {
+    description
+      "This object contains parameters relating to Security.";
+    leaf secret-number-of-entries {
+      type uint64;
+      description
+        "{{numentries}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.SecretNumberOfEntries";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.";
+  }
+
+  grouping transport-security-secret-g {
+    description
+      "Shared Secret Table. This table gathers information about all types of shared secret-based credentials (UICC).";
+    leaf enable {
+      type boolean;
+      config false;
+      description
+        "Enable or disable this Shared Secret entry";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Enable";
+    }
+    leaf type {
+      type enumeration {
+        enum "sim" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - SIM";
+        }
+        enum "usim" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - USIM";
+        }
+      }
+      description
+        "The type of this Shared Secret entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type";
+    }
+    leaf status {
+      type enumeration {
+        enum "present" {
+          value 1;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Present";
+        }
+        enum "not-present" {
+          value 2;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Not_present";
+        }
+        enum "error" {
+          value 3;
+          description
+            "none";
+          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Error";
+        }
+      }
+      description
+        "The status of this Shared Secret entry.";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status";
+    }
+    leaf uicc-card-id {
+      type string {
+        length "0..19";
+      }
+      description
+        "The UICC Card Identifier (UICCID), only numeric values are allowed. {{bibref|ITU-E.118}}";
+      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.UICCCardID";
+    }
+    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.";
+  }
+}
diff --git a/sdnr/model/yang/core-model@2017-03-20.yang b/sdnr/model/yang/core-model@2017-03-20.yang
new file mode 100644
index 0000000..1340628
--- /dev/null
+++ b/sdnr/model/yang/core-model@2017-03-20.yang
@@ -0,0 +1,1700 @@
+module core-model {
+    namespace "urn:onf:params:xml:ns:yang:core-model";
+    prefix core-model;
+    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG List:  <mailto:wireless-transport@login.opennetworking.org>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             WG Chair: Giorgio Cazzaniga
+                       <mailto:giorgio.cazzaniga@sm-optics.com>
+             Editors:  Thorsten Heinze
+                       <mailto:thorsten.heinze@telefonica.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "This module contains a collection of YANG definitions for managing wireless networks.";
+    revision 2017-03-20 {
+        description "Initial version";
+        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
+    }
+    /***********************
+    * package core-network-model
+    **********************/ 
+        /***********************
+        * package type-definitions
+        **********************/ 
+            /***********************
+            * package resilience
+            **********************/ 
+                typedef protection-reason {
+                    type enumeration {
+                        enum wait-to-revert {
+                            description "removed";
+                        }
+                        enum signal-degrade {
+                            description "removed";
+                        }
+                        enum signal-fail {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef route-selection-control {
+                    type enumeration {
+                        enum normal {
+                            description "removed";
+                        }
+                        enum manual {
+                            description "removed";
+                        }
+                        enum forced {
+                            description "removed";
+                        }
+                        enum lock-out {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef route-selection-reason {
+                    type enumeration {
+                        enum wait-to-revert {
+                            description "removed";
+                        }
+                        enum signal-degrade {
+                            description "removed";
+                        }
+                        enum signal-fail {
+                            description "removed";
+                        }
+                        enum normal {
+                            description "removed";
+                        }
+                        enum manual {
+                            description "removed";
+                        }
+                        enum forced {
+                            description "removed";
+                        }
+                        enum lock-out {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef switch-control {
+                    type enumeration {
+                        enum normal {
+                            description "removed";
+                        }
+                        enum manual {
+                            description "removed";
+                        }
+                        enum forced {
+                            description "removed";
+                        }
+                    }
+                    description "none";
+                }
+                typedef switch-state-reason {
+                    type enumeration {
+                        enum wait-to-revert {
+                            description "removed";
+                        }
+                        enum signal-degrade {
+                            description "removed";
+                        }
+                        enum signal-fail {
+                            description "removed";
+                        }
+                        enum normal {
+                            description "removed";
+                        }
+                        enum manual {
+                            description "removed";
+                        }
+                        enum forced {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef reversion-mode {
+                    type enumeration {
+                        enum revertive {
+                            description "removed";
+                        }
+                        enum non-revertive {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                grouping global-pac-g {
+                    uses global-class-g;
+                    description "removed";
+                }
+                grouping local-pac-g {
+                    uses local-class-g;
+                    description "removed";
+                }
+                typedef protection-type {
+                    type string;
+                    description "removed";
+                }
+
+            typedef layer-protocol-name {
+                type string;
+                description "removed";
+            }
+            typedef port-role {
+                type string;
+                description "removed";
+            }
+            typedef port-direction {
+                type enumeration {
+                    enum bidirectional {
+                        description "removed";
+                    }
+                    enum input {
+                        description "removed";
+                    }
+                    enum output {
+                        description "removed";
+                    }
+                    enum unidentified-or-unknown {
+                        description "removed";
+                    }
+                }
+                description "removed";
+            }
+            typedef forwarding-direction {
+                type enumeration {
+                    enum bidirectional {
+                        description "removed";
+                    }
+                    enum unidirectional {
+                        description "removed";
+                    }
+                    enum undefined-or-unknown {
+                        description "removed";
+                    }
+                }
+                description "removed";
+            }
+            typedef termination-direction {
+                type enumeration {
+                    enum bidirectional {
+                        description "removed";
+                    }
+                    enum sink {
+                        description "removed";
+                    }
+                    enum source {
+                        description "removed";
+                    }
+                    enum undefined-or-unknown {
+                        description "removed";
+                    }
+                }
+                description "removed";
+            }
+            typedef extended-termination-direction {
+                type enumeration {
+                    enum bidirectional {
+                        description "removed";
+                    }
+                    enum sink {
+                        description "removed";
+                    }
+                    enum source {
+                        description "removed";
+                    }
+                    enum undefined-or-unknown {
+                        description "removed";
+                    }
+                    enum contra-direction-sink {
+                        description "removed";
+                    }
+                    enum contra-direction-source {
+                        description "removed";
+                    }
+                }
+                description "removed";
+            }
+            typedef termination-state {
+                type enumeration {
+                    enum lp-can-never-terminate {
+                        description "removed";
+                    }
+                    enum lt-not-terminated {
+                        description "removed";
+                    }
+                    enum terminated-server-to-client-flow {
+                        description "removed";
+                    }
+                    enum terminated-client-to-server-flow {
+                        description "removed";
+                    }
+                    enum terminated-bidirectional {
+                        description "removed";
+                    }
+                    enum lt-permenantly-terminated {
+                        description "removed";
+                    }
+                    enum termination-state-unknown {
+                        description "removed";
+                    }
+                }
+                description "removed";
+            }
+
+        /***********************
+        * package object-classes
+        **********************/ 
+            /***********************
+            * package resilience
+            **********************/ 
+                grouping configuration-and-switch-controller-g {
+                    leaf switch-rule {
+                        type to-be-defined;
+                        description "removed";
+                    }
+                    leaf-list fc-switch {
+                        type leafref {
+                            path '/forwarding-construct/fc-switch/uuid';
+                        }
+                        description "removed";
+                    }
+                    container control-parameters {
+                        uses control-parameters-pac-g;
+                        description "removed";
+                    }
+                    leaf-list profile-proxy {
+                        type string;
+                        description "removed";
+                    }
+                    container local-pac {
+                        uses local-pac-g;
+                        description "none";
+                    }
+                    container global-pac {
+                        uses global-pac-g;
+                        description "none";
+                    }
+                    leaf is-frozen {
+                        type boolean;
+                        description "removed";
+                    }
+                    leaf is-coordinated-switching-both-ends {
+                        type boolean;
+                        description "removed";
+                    }
+                    leaf-list subordinate-controller {
+                        type leafref {
+                            path '/network-element/ltp/lp/config-and-switch-controller/switch-rule';
+                        }
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping control-parameters-pac-g {
+                    leaf reversion-mode {
+                        type reversion-mode;
+                        description "removed";
+                    }
+                    leaf wait-to-revert-time {
+                        type int64;
+                        default 15;
+                        description "removed";
+                    }
+                    leaf prot-type {
+                        type protection-type;
+                        description "removed";
+                    }
+                    leaf hold-off-time {
+                        type int64;
+                        description "removed";
+                    }
+                    leaf network-scheme-specification {
+                        type string;
+                        description "none";
+                    }
+                    description "removed";
+                }
+                grouping fc-switch-g {
+                    leaf hold-off-time {
+                        type int64;
+                        description "removed";
+                    }
+                    leaf prot-type {
+                        type protection-type;
+                        description "removed";
+                    }
+                    leaf reversion-mode {
+                        type reversion-mode;
+                        description "removed";
+                    }
+                    leaf-list selected-fc-port {
+                        type leafref {
+                            path '/forwarding-construct/fc-port/uuid';
+                        }
+                        description "removed";
+                    }
+                    leaf-list profile-proxy {
+                        type string;
+                        description "removed";
+                    }
+                    container internal-configuration-and-switch-control {
+                        uses configuration-and-switch-controller-g;
+                        description "removed";
+                    }
+                    leaf switch-control {
+                        type switch-control;
+                        description "removed";
+                    }
+                    leaf switch-selects-ports {
+                        type port-direction;
+                        description "removed";
+                    }
+                    leaf switch-selection-reason {
+                        type switch-state-reason;
+                        config false;
+                        description "removed";
+                    }
+                    container control-parameters {
+                        uses control-parameters-pac-g;
+                        description "none";
+                    }
+                    leaf wait-to-restore-time {
+                        type int64;
+                        description "removed";
+                    }
+                    uses local-class-g;
+                    description "removed";
+                }
+
+            grouping forwarding-domain-g {
+                leaf-list layer-protocol-name {
+                    type layer-protocol-name;
+                    min-elements 1;
+                    description "removed";
+                }
+                leaf-list lower-level-fd {
+                    type leafref {
+                        path '/network-element/fd/uuid';
+                    }
+                    description "removed";
+                }
+                leaf-list fc {
+                    type leafref {
+                        path '/forwarding-construct/uuid';
+                    }
+                    description "removed";
+                }
+                leaf-list ltp {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    description "removed";
+                }
+                leaf-list lower-level-link {
+                    type string;
+                    description "removed";
+                }
+                uses global-class-g;
+                description "removed";
+            }
+            grouping forwarding-construct-g {
+                leaf layer-protocol-name {
+                    type layer-protocol-name;
+                    description "removed";
+                }
+                leaf-list lower-level-fc {
+                    type leafref {
+                        path '/forwarding-construct/uuid';
+                    }
+                    description "removed";
+                }
+                leaf-list fc-route {
+                    type string;
+                    description "removed";
+                }
+                list fc-port {
+                    key 'uuid';
+                    min-elements 2;
+                    uses fc-port-g;
+                    description "removed";
+                }
+                list fc-switch {
+                    key 'uuid';
+                    uses fc-switch-g;
+                    description "removed";
+                }
+                leaf forwarding-direction {
+                    type forwarding-direction;
+                    description "removed";
+                }
+                leaf is-protection-lock-out {
+                    if-feature protection-exclude-server;
+                    type boolean;
+                    description "removed";
+                }
+                leaf service-priority {
+                    type int64;
+                    description "removed";
+                }
+                leaf-list supported-link {
+                    type string;
+                    description "removed";
+                }
+                uses global-class-g;
+                description "removed";
+            }
+            container network-element {
+                presence  "";
+                list fd {
+                    key 'uuid';
+                    uses forwarding-domain-g;
+                    description "removed";
+                }
+                list ltp {
+                    key 'uuid';
+                    uses logical-termination-point-g;
+                    description "removed";
+                }
+                uses global-class-g;
+                description "removed";
+            }
+            list forwarding-construct {
+                key 'uuid';
+                uses forwarding-construct-g;
+                description "none";
+            }
+            grouping fc-port-g {
+                leaf-list ltp {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    max-elements 2;
+                    description "removed";
+                }
+                leaf role {
+                    type port-role;
+                    description "removed";
+                }
+                leaf fc-port-direction {
+                    type port-direction;
+                    description "removed";
+                }
+                leaf is-protection-lock-out {
+                    if-feature protection-exclude-fc-port;
+                    type boolean;
+                    description "removed";
+                }
+                leaf selection-priority {
+                    type int64;
+                    description "removed";
+                }
+                leaf is-internal-port {
+                    type boolean;
+                    config false;
+                    description "removed";
+                }
+                leaf-list fc-route-feeds-fc-port-egress {
+                    type string;
+                    description "removed";
+                }
+                uses local-class-g;
+                description "removed";
+            }
+            grouping layer-protocol-g {
+                leaf layer-protocol-name {
+                    type layer-protocol-name;
+                    description "removed";
+                }
+                leaf configured-client-capacity {
+                    type to-be-defined;
+                    description "removed";
+                }
+                leaf lp-direction {
+                    type termination-direction;
+                    description "removed";
+                }
+                leaf termination-state {
+                    type termination-state;
+                    description "removed";
+                }
+                list config-and-switch-controller {
+                    key 'switch-rule';
+                    uses configuration-and-switch-controller-g;
+                    description "removed";
+                }
+                leaf is-protection-lock-out {
+                    if-feature protection-exclude-ltp;
+                    type boolean;
+                    description "removed";
+                }
+                leaf fc-blocks-signal-to-lp {
+                    type string;
+                    description "none";
+                }
+                uses local-class-g;
+                description "removed";
+            }
+            grouping logical-termination-point-g {
+                leaf-list server-ltp {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    description "removed";
+                }
+                leaf-list client-ltp {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    description "removed";
+                }
+                list lp {
+                    key 'uuid';
+                    min-elements 1;
+                    uses layer-protocol-g;
+                    description "removed";
+                }
+                leaf connected-ltp {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    description "removed";
+                }
+                leaf peer-ltp {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    description "removed";
+                }
+                leaf-list physical-port-reference {
+                    type string;
+                    description "removed";
+                }
+                leaf-list ltp-in-other-view {
+                    type leafref {
+                        path '/network-element/ltp/uuid';
+                    }
+                    description "removed";
+                }
+                leaf ltp-direction {
+                    type termination-direction;
+                    description "removed";
+                }
+                uses global-class-g;
+                description "removed";
+            }
+            feature protection-exclude-server {
+                description "In protection context if server of protection where entire server is to be excluded from use for protection.";
+            }
+            feature protection-exclude-fc-port {
+                description "In protection context where the FcPort is to be excluded from use for protection.";
+            }
+            feature protection-exclude-ltp {
+                description "In protection context if LTP of protection where entire LTP is to be excluded from use for protection.";
+            }
+
+        /***********************
+        * package diagrams
+        **********************/ 
+
+        /***********************
+        * package associations
+        **********************/ 
+
+
+    /***********************
+    * package core-foundation-model
+    **********************/ 
+        /***********************
+        * package type-definitions
+        **********************/ 
+            typedef date-and-time {
+                type string;
+                description "removed";
+            }
+            typedef bit-string {
+                type string;
+                description "removed";
+            }
+            typedef real {
+                type string;
+                description "removed";
+            }
+            typedef printable-string {
+                type string;
+                description "removed";
+            }
+            typedef to-be-defined {
+                type string;
+                description "removed";
+            }
+
+        /***********************
+        * package super-classes-and-common-packages
+        **********************/ 
+            /***********************
+            * package object-classes
+            **********************/ 
+                grouping name-g {
+                    list name {
+                        key 'value-name';
+                        min-elements 1;
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping global-class-g {
+                    list local-id {
+                        key 'value-name';
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    leaf uuid {
+                        type universal-id;
+                        description "removed";
+                    }
+                    uses name-g;
+                    uses label-g;
+                    uses extension-g;
+                    uses state-pac-g;
+                    description "removed";
+                }
+                grouping local-class-g {
+                    list local-id {
+                        key 'value-name';
+                        min-elements 1;
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    leaf uuid {
+                        type universal-id;
+                        description "A global identifier for the LocalClass, which is used as reference.";
+                    }
+                    uses name-g;
+                    uses label-g;
+                    uses extension-g;
+                    uses state-pac-g;
+                    description "removed";
+                }
+                grouping label-g {
+                    list label {
+                        key 'value-name';
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping extension-g {
+                    list extension {
+                        key 'value-name';
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping universal-id-authority-g {
+                    leaf uuid {
+                        type universal-id;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping name-and-value-authority-g {
+                    leaf uuid {
+                        type universal-id;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping conditional-package-g {
+                    uses extension-g;
+                    uses label-g;
+                    description "removed";
+                }
+
+            /***********************
+            * package type-definitions
+            **********************/ 
+                grouping name-and-value-g {
+                    leaf value-name {
+                        type string;
+                        description "removed";
+                    }
+                    leaf value {
+                        type string;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                typedef universal-id {
+                    type string;
+                    description "removed";
+                }
+                grouping address-g {
+                    leaf address-name {
+                        type string;
+                        description "removed";
+                    }
+                    list address-element {
+                        key 'uuid';
+                        uses address-element-g;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping local-id-and-class-g {
+                    leaf class-of-instance {
+                        type string;
+                        description "removed";
+                    }
+                    container local-id {
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping name-and-class-g {
+                    leaf class-of-instance {
+                        type string;
+                        description "removed";
+                    }
+                    container name {
+                        uses name-and-value-g;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+                grouping address-element-g {
+                    leaf address-element-name {
+                        type string;
+                        description "removed";
+                    }
+                    container local-id {
+                        uses local-id-and-class-g;
+                        description "removed";
+                    }
+                    leaf uuid {
+                        type universal-id;
+                        description "removed";
+                    }
+                    container name {
+                        uses name-and-class-g;
+                        description "removed";
+                    }
+                    leaf arbitrary-element {
+                        type string;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+
+
+        /***********************
+        * package state-model
+        **********************/ 
+            /***********************
+            * package object-classes
+            **********************/ 
+                grouping state-pac-g {
+                    leaf operational-state {
+                        type operational-state;
+                        config false;
+                        description "removed";
+                    }
+                    leaf administrative-control {
+                        type administrative-control;
+                        description "removed";
+                    }
+                    leaf administrative-state {
+                        type administrative-state;
+                        config false;
+                        description "removed";
+                    }
+                    leaf lifecycle-state {
+                        type lifecycle-state;
+                        description "removed";
+                    }
+                    description "removed";
+                }
+
+            /***********************
+            * package type-definitions
+            **********************/ 
+                typedef operational-state {
+                    type enumeration {
+                        enum disabled {
+                            description "removed";
+                        }
+                        enum enabled {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef administrative-state {
+                    type enumeration {
+                        enum locked {
+                            description "removed";
+                        }
+                        enum unlocked {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef administrative-control {
+                    type enumeration {
+                        enum unlock {
+                            description "removed";
+                        }
+                        enum lock-passive {
+                            description "removed";
+                        }
+                        enum lock-active {
+                            description "removed";
+                        }
+                        enum lock-immediate {
+                            description "removed";
+                        }
+                    }
+                    description "removed
+                        removed";
+                }
+                typedef extended-admin-state {
+                    type enumeration {
+                        enum locked {
+                            description "removed";
+                        }
+                        enum unlocked {
+                            description "removed";
+                        }
+                        enum shutting-down-active {
+                            description "removed";
+                        }
+                        enum shutting-down-passive {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef lifecycle-state {
+                    type enumeration {
+                        enum planned {
+                            description "removed";
+                        }
+                        enum potential {
+                            description "removed";
+                        }
+                        enum installed {
+                            description "removed";
+                        }
+                        enum pending-removal {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+
+
+
+    /***********************
+    * package core-operations-model
+    **********************/ 
+        /***********************
+        * package pattern
+        **********************/ 
+            /***********************
+            * package data-types
+            **********************/ 
+                typedef action-verbs {
+                    type enumeration {
+                        enum create-post-add {
+                            description "none";
+                        }
+                        enum set-update-put-modify-write-add {
+                            description "none";
+                        }
+                        enum get-read {
+                            description "none";
+                        }
+                        enum delete-remove {
+                            description "none";
+                        }
+                    }
+                    description "none";
+                }
+                typedef test-type {
+                    type string;
+                    description "none";
+                }
+                typedef activity-directive {
+                    type enumeration {
+                        enum structure-is-not {
+                            description "none";
+                        }
+                        enum new-structure-and-values {
+                            description "none";
+                        }
+                        enum incremental-structure-and-values {
+                            description "none";
+                        }
+                        enum only-values-in-existing-structure {
+                            description "none";
+                        }
+                        enum defined-by-verb {
+                            description "none";
+                        }
+                    }
+                    description "none";
+                }
+
+            /***********************
+            * package diagrams
+            **********************/ 
+                typedef action-effort {
+                    type enumeration {
+                        enum best-effort {
+                            description "none";
+                        }
+                        enum exact-match {
+                            description "none";
+                        }
+                    }
+                    description "none";
+                }
+                typedef pause-resume-rule {
+                    type enumeration {
+                        enum no-pause-possible {
+                            description "none";
+                        }
+                    }
+                    description "none";
+                }
+
+            /***********************
+            * package object-classes
+            **********************/ 
+                grouping general-directives-g {
+                    description "none";
+                }
+                grouping necessary-initial-condition-constraints-g {
+                    leaf is-not {
+                        type boolean;
+                        description "none";
+                    }
+                    description "none";
+                }
+                grouping operation-details-g {
+                    leaf action-verb {
+                        type action-verbs;
+                        description "none";
+                    }
+                    list necessary-initialcondition-constraints {
+                        key 'is-not';
+                        uses necessary-initial-condition-constraints-g;
+                        description "none";
+                    }
+                    description "none";
+                }
+                container operation-envelope {
+                    presence  "";
+                    list operation-set {
+                        key 'effort-and-action';
+                        min-elements 1;
+                        uses operation-set-g;
+                        description "none";
+                    }
+                    container generaldirectives {
+                        uses general-directives-g;
+                        description "none";
+                    }
+                    container operationidentifiers {
+                        uses operation-identifiers-g;
+                        description "none";
+                    }
+                    description "none";
+                }
+                grouping operation-identifiers-g {
+                    description "none";
+                }
+                grouping operation-set-g {
+                    leaf-list after-operation-set {
+                        type action-effort;
+                        description "none";
+                    }
+                    leaf-list before-operation-set {
+                        type action-effort;
+                        description "none";
+                    }
+                    leaf effort-and-action {
+                        type action-effort;
+                        description "none";
+                    }
+                    leaf pause-resume-rule {
+                        type pause-resume-rule;
+                        description "none";
+                    }
+                    leaf-list operationset {
+                        type action-effort;
+                        description "none";
+                    }
+                    leaf is-short-lived {
+                        type boolean;
+                        default true;
+                        description "none";
+                    }
+                    list operation-details {
+                        key 'action-verb';
+                        min-elements 1;
+                        uses operation-details-g;
+                        description "none";
+                    }
+                    description "none";
+                }
+
+
+
+    /***********************
+    * package core-physical-model-initial
+    **********************/ 
+        /***********************
+        * package rule-models
+        **********************/ 
+            /***********************
+            * package connector-rules
+            **********************/ 
+                /***********************
+                * package object-classes
+                **********************/ 
+                    grouping connector-in-holder-g {
+                        leaf connector-on-equipment-for-holder {
+                            type universal-id;
+                            description "none";
+                        }
+                        uses connector-g;
+                        description "removed";
+                    }
+                    grouping connector-cable-end-g {
+                        leaf connector-on-equipment-for-cable {
+                            type universal-id;
+                            description "none";
+                        }
+                        uses connector-g;
+                        description "removed";
+                    }
+                    grouping connector-on-equipment-for-cable-g {
+                        leaf connector-cable-end {
+                            type universal-id;
+                            description "none";
+                        }
+                        uses connector-g;
+                        description "removed";
+                    }
+                    grouping connector-on-equipment-for-holder-g {
+                        leaf connector-in-holder {
+                            type universal-id;
+                            description "none";
+                        }
+                        uses connector-g;
+                        description "removed";
+                    }
+
+
+
+        /***********************
+        * package equipment-detail
+        **********************/ 
+            /***********************
+            * package object-classes
+            **********************/ 
+                /***********************
+                * package dynamic-details
+                **********************/ 
+                    grouping function-enablers-g {
+                        leaf power-state {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping mechanical-functions-g {
+                        leaf rotation-speed {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping physical-properties-g {
+                        leaf temperature {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping holder-monitors-g {
+                        leaf is-active {
+                            type boolean;
+                            description "none";
+                        }
+                        leaf is-actual-mismatch-with-expected {
+                            type boolean;
+                            description "none";
+                        }
+                        leaf aggregate-function {
+                            type string;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping location-g {
+                        container equipment-location {
+                            uses address-g;
+                            description "none";
+                        }
+                        container geographical-location {
+                            uses address-g;
+                            description "none";
+                        }
+                        description "none";
+                    }
+
+                /***********************
+                * package invariant-details
+                **********************/ 
+                    grouping category-g {
+                        leaf category {
+                            type equipment-category;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping equipment-instance-g {
+                        leaf manufacture-date {
+                            type string;
+                            description "none";
+                        }
+                        leaf serial-number {
+                            type string;
+                            description "none";
+                        }
+                        leaf asset-instance-identifier {
+                            type string;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping equipment-type-g {
+                        leaf description {
+                            type string;
+                            description "none";
+                        }
+                        leaf model-identifier {
+                            type string;
+                            description "none";
+                        }
+                        leaf part-type-identifier {
+                            type string;
+                            description "none";
+                        }
+                        leaf type-name {
+                            type string;
+                            description "none";
+                        }
+                        leaf version {
+                            type string;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping holder-structure-g {
+                        leaf holder-category {
+                            type holder-category;
+                            description "none";
+                        }
+                        leaf is-captive {
+                            type boolean;
+                            description "none";
+                        }
+                        leaf is-guided {
+                            type boolean;
+                            description "none";
+                        }
+                        leaf is-quantized-space {
+                            type boolean;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping manufactured-thing-g {
+                        container manufacturer-properties {
+                            uses manufacturer-properties-g;
+                            description "none";
+                        }
+                        container equipment-type {
+                            uses equipment-type-g;
+                            description "none";
+                        }
+                        container equipment-instance {
+                            uses equipment-instance-g;
+                            description "none";
+                        }
+                        container operator-augmented-equipment-type {
+                            uses operator-augmented-equipment-type-g;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping manufacturer-properties-g {
+                        leaf manufacturer-identifier {
+                            type string;
+                            description "none";
+                        }
+                        leaf manufacturer-name {
+                            type string;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping mechanical-features-g {
+                        description "removed";
+                    }
+                    grouping operator-augmented-equipment-type-g {
+                        leaf asset-type-identifier {
+                            type string;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping physical-characteristics-g {
+                        leaf weight-characteristics {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        leaf fire-characteristics {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        leaf materials {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping physical-rating-g {
+                        leaf thermal-rating {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        leaf power-rating {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping position-g {
+                        leaf relative-position {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping spatial-properties-of-type-g {
+                        leaf height {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        leaf width {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        leaf length {
+                            type to-be-defined;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+                    grouping swapability-g {
+                        leaf is-hot-swappable {
+                            type boolean;
+                            default true;
+                            description "none";
+                        }
+                        description "removed";
+                    }
+
+
+
+        /***********************
+        * package equipment-pattern-structure
+        **********************/ 
+            /***********************
+            * package object-classes
+            **********************/ 
+                grouping cable-g {
+                    list connector {
+                        key 'uuid';
+                        min-elements 1;
+                        uses connector-g;
+                        description "none";
+                    }
+                    container manufactured-thing {
+                        uses manufactured-thing-g;
+                        description "none";
+                    }
+                    container physical-characteristics {
+                        uses physical-characteristics-g;
+                        description "none";
+                    }
+                    container mechanical-features {
+                        uses mechanical-features-g;
+                        description "none";
+                    }
+                    container spatial-properties-of-type {
+                        uses spatial-properties-of-type-g;
+                        description "none";
+                    }
+                    uses global-class-g;
+                    description "removed";
+                }
+                grouping connector-g {
+                    leaf connector {
+                        type string;
+                        description "none";
+                    }
+                    list pin {
+                        key 'position';
+                        min-elements 1;
+                        uses pin-g;
+                        description "none";
+                    }
+                    leaf orientation {
+                        type connector-and-pin-orientation;
+                        description "none";
+                    }
+                    container manufactured-thing {
+                        uses manufactured-thing-g;
+                        description "none";
+                    }
+                    container position {
+                        uses position-g;
+                        description "none";
+                    }
+                    container mechanical-features {
+                        uses mechanical-features-g;
+                        description "none";
+                    }
+                    container pin-layout {
+                        uses pin-layout-g;
+                        description "none";
+                    }
+                    leaf connector-type {
+                        type to-be-defined;
+                        description "none";
+                    }
+                    uses local-class-g;
+                    uses group-of-pins-g;
+                    description "removed";
+                }
+                grouping equipment-g {
+                    list connector {
+                        key 'uuid';
+                        uses connector-g;
+                        description "none";
+                    }
+                    list contained-holder {
+                        key 'uuid';
+                        uses holder-g;
+                        description "none";
+                    }
+                    list exposed-cable {
+                        key 'uuid';
+                        uses cable-g;
+                        description "none";
+                    }
+                    container manufactured-thing {
+                        uses manufactured-thing-g;
+                        description "none";
+                    }
+                    container spatial-properties-of-type {
+                        uses spatial-properties-of-type-g;
+                        description "none";
+                    }
+                    container mechanical-features {
+                        uses mechanical-features-g;
+                        description "none";
+                    }
+                    container physical-properties {
+                        uses physical-properties-g;
+                        description "none";
+                    }
+                    container function-enablers {
+                        uses function-enablers-g;
+                        description "none";
+                    }
+                    container mechanical-functions {
+                        uses mechanical-functions-g;
+                        description "none";
+                    }
+                    container physical-characteristics {
+                        uses physical-characteristics-g;
+                        description "none";
+                    }
+                    container swapability {
+                        uses swapability-g;
+                        description "none";
+                    }
+                    container category {
+                        uses category-g;
+                        description "none";
+                    }
+                    container physical-rating {
+                        uses physical-rating-g;
+                        description "none";
+                    }
+                    leaf is-field-replaceable {
+                        type boolean;
+                        default true;
+                        config false;
+                        description "removed";
+                    }
+                    leaf-list function-block {
+                        type string;
+                        description "none";
+                    }
+                    container expected-equipment {
+                        uses expected-equipment-g;
+                        description "none";
+                    }
+                    container actual-equipment {
+                        uses actual-equipment-g;
+                        description "none";
+                    }
+                    container location {
+                        uses location-g;
+                        description "none";
+                    }
+                    uses global-class-g;
+                    description "removed";
+                }
+                list equipment {
+                    key 'uuid';
+                    uses equipment-g;
+                                description "none";
+}
+                grouping holder-g {
+                    leaf-list connector {
+                        type leafref {
+                            path '/equipment/exposed-cable/connector/uuid';
+                        }
+                        description "none";
+                    }
+                    leaf occupying-fru {
+                        type leafref {
+                            path '/equipment/uuid';
+                        }
+                        description "removed";
+                    }
+                    container spatial-properties-of-type {
+                        uses spatial-properties-of-type-g;
+                        description "none";
+                    }
+                    container holder-monitors {
+                        uses holder-monitors-g;
+                        description "none";
+                    }
+                    container holder-location {
+                        uses address-g;
+                        description "none";
+                    }
+                    container position {
+                        uses position-g;
+                        description "none";
+                    }
+                    container holder-structure {
+                        uses holder-structure-g;
+                        description "none";
+                    }
+                    container physical-rating {
+                        uses physical-rating-g;
+                        description "none";
+                    }
+                    leaf-list supported-equipment {
+                        type string;
+                        min-elements 1;
+                        description "none";
+                    }
+                    container expected-holder {
+                        uses expected-holder-g;
+                        description "none";
+                    }
+                    container actual-holder {
+                        uses actual-holder-g;
+                        description "none";
+                    }
+                    uses local-class-g;
+                    description "removed";
+                }
+
+            /***********************
+            * package data-types
+            **********************/ 
+                typedef connector-and-pin-orientation {
+                    type enumeration {
+                        enum male {
+                            description "removed";
+                        }
+                        enum female {
+                            description "removed";
+                        }
+                        enum symmetric-neutral {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef equipment-category {
+                    type enumeration {
+                        enum subrack {
+                            description "removed";
+                        }
+                        enum circuit-pack {
+                            description "removed";
+                        }
+                        enum small-formfactor-pluggable {
+                            description "removed";
+                        }
+                        enum stand-alone-unit {
+                            description "removed";
+                        }
+                        enum rack {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+                typedef holder-category {
+                    type enumeration {
+                        enum slot {
+                            description "removed";
+                        }
+                    }
+                    description "removed";
+                }
+
+
+        /***********************
+        * package expected-and-actual
+        **********************/ 
+            /***********************
+            * package object-classes
+            **********************/ 
+                grouping actual-holder-g {
+                    description "removed";
+                }
+                grouping expected-holder-g {
+                    description "removed";
+                }
+                grouping actual-equipment-g {
+                    description "removed";
+                }
+                grouping expected-equipment-g {
+                    description "removed";
+                }
+
+
+        /***********************
+        * package connector-and-pin
+        **********************/ 
+            /***********************
+            * package object-classes
+            **********************/ 
+                grouping pin-g {
+                    leaf position {
+                        type leafref {
+                            path '/equipment/exposed-cable/connector/position/relative-position';
+                        }
+                        description "none";
+                    }
+                    leaf orientation {
+                        type connector-and-pin-orientation;
+                        description "none";
+                    }
+                    description "removed";
+                }
+                grouping pin-group-g {
+                    leaf-list pin {
+                        type leafref {
+                            path '/equipment/exposed-cable/connector/pin/position';
+                        }
+                        min-elements 1;
+                        description "none";
+                    }
+                    uses port-g;
+                    uses group-of-pins-g;
+                    description "removed";
+                }
+                grouping pin-layout-g {
+                    list position {
+                        key 'relative-position';
+                        min-elements 1;
+                        uses position-g;
+                        description "none";
+                    }
+                    description "removed";
+                }
+                grouping port-g {
+                    description "removed";
+                }
+                grouping signal-ref-pt-g {
+                    leaf ltp {
+                        type leafref {
+                            path '/network-element/ltp/uuid';
+                        }
+                        description "none";
+                    }
+                    leaf-list elemental-signals {
+                        type universal-id;
+                        min-elements 1;
+                        description "none";
+                    }
+                    description "removed";
+                }
+                grouping signal-ref-pt-group-g {
+                    leaf pin-group {
+                        type universal-id;
+                        description "none";
+                    }
+                    leaf-list signal-ref-pt {
+                        type universal-id;
+                        min-elements 1;
+                        description "none";
+                    }
+                    uses port-g;
+                    description "removed";
+                }
+                grouping elemental-signals-g {
+                    leaf-list pin {
+                        type leafref {
+                            path '/equipment/exposed-cable/connector/pin/position';
+                        }
+                        min-elements 1;
+                        description "none";
+                    }
+                    description "removed";
+                }
+                grouping group-of-pins-g {
+                    description "removed";
+                }
+
+
+
+}
diff --git a/sdnr/model/yang/g.874.1-model@2017-03-20.yang b/sdnr/model/yang/g.874.1-model@2017-03-20.yang
new file mode 100644
index 0000000..4a14783
--- /dev/null
+++ b/sdnr/model/yang/g.874.1-model@2017-03-20.yang
@@ -0,0 +1,646 @@
+module g.874.1-model {
+    namespace "urn:onf:params:xml:ns:yang:g.874.1-model";
+    prefix g.874.1-model;
+
+    import core-model {
+        prefix core-model;
+    }
+    import ietf-yang-types {
+        prefix yang;
+    }
+
+    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG List:  <mailto:wireless-transport@login.opennetworking.org>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             WG Chair: Giorgio Cazzaniga
+                       <mailto:giorgio.cazzaniga@sm-optics.com>
+             Editors:  Thorsten Heinze
+                       <mailto:thorsten.heinze@telefonica.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>";
+    revision 2017-03-20 {
+        description "Initial version";
+        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
+    }
+    /***********************
+    * package object-classes
+    **********************/ 
+        grouping otn-current-data-g {
+            leaf timestamp {
+                type date-and-time;
+                description "The timestamp associated with when the current data was collected.";
+            }
+            uses q.822-current-data-g;
+            description "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance.";
+        }
+        grouping otn-history-data-g {
+            leaf suspect-interval-flag {
+                type boolean;
+                default false;
+                description "This attribute indicates that the data collected during the interval is suspect.";
+            }
+            uses q.822-history-data-g;
+            description "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited. ";
+        }
+
+    /***********************
+    * package type-definitions
+    **********************/ 
+        typedef directionality {
+            type enumeration {
+                enum sink {
+                    description "none";
+                }
+                enum source {
+                    description "none";
+                }
+                enum bidirectional {
+                    description "none";
+                }
+            }
+            description "The enumeration with the options for directionality of the termination point.";
+        }
+        typedef gcc-access {
+            type enumeration {
+                enum gcc1 {
+                    description "none";
+                }
+                enum gcc2 {
+                    description "none";
+                }
+                enum gcc1-and-gcc2 {
+                    description "none";
+                }
+            }
+            description "This enumeration indicates the GCC access represented by the entity.";
+        }
+        typedef operational-state {
+            type enumeration {
+                enum enabled {
+                    description "none";
+                }
+                enum disabled {
+                    description "none";
+                }
+            }
+            description "The list of valid operational states for the connection.";
+        }
+        typedef oper-type {
+            type enumeration {
+                enum revertive {
+                    description "none";
+                }
+                enum non-revertive {
+                    description "none";
+                }
+            }
+            description "The operation type associated with the protection mechanism (either non-revertive or revertive).";
+        }
+        typedef ext-cmd-operation {
+            type enumeration {
+                enum exercise {
+                    description "none";
+                }
+                enum manual-switch {
+                    description "none";
+                }
+                enum forced-switch {
+                    description "none";
+                }
+                enum lockout {
+                    description "none";
+                }
+                enum release-of-manual-switch {
+                    description "none";
+                }
+                enum release-of-forced-switch {
+                    description "none";
+                }
+                enum release-of-lockout {
+                    description "none";
+                }
+            }
+            description "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations.";
+        }
+        typedef administrative-state {
+            type enumeration {
+                enum unlocked {
+                    description "none";
+                }
+                enum locked {
+                    description "none";
+                }
+                enum shutting-down {
+                    description "none";
+                }
+            }
+            description "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100.";
+        }
+        typedef oc-tk-nim-k-bit-rate {
+            type enumeration {
+                enum 2.5-g {
+                    description "none";
+                }
+                enum 10-g {
+                    description "none";
+                }
+                enum 40-g {
+                    description "none";
+                }
+                enum 100-g {
+                    description "none";
+                }
+            }
+            description "Provides an enumeration with the meaning of each 'k' value.";
+        }
+        typedef tim-det-mo {
+            type enumeration {
+                enum dapi {
+                    description "none";
+                }
+                enum sapi {
+                    description "none";
+                }
+                enum both {
+                    description "none";
+                }
+            }
+            description "List of modes for trace identifier mismatch detection.";
+        }
+        typedef oc-tk-nim-problem-list {
+            type enumeration {
+                enum los-p {
+                    description "Loss of Signal -- Payload";
+                }
+                enum oci {
+                    description "Open Connection Indicator";
+                }
+                enum ssf-p {
+                    description "Server Signal Failure -- Payload -- can not co-exist with SSF or SSF-O";
+                }
+                enum ssf-o {
+                    description "Server Signal Failure -- Overhead; can not co-exist with SSF or SSF-P";
+                }
+                enum ssf {
+                    description "Server Signal Failure; can not co-exist with SSF-P or SSF-O";
+                }
+                enum tim {
+                    description "Trail Trace Identifier Mismatch";
+                }
+                enum deg {
+                    description "Signal Degraded";
+                }
+                enum bdi {
+                    description "Backward Defect Indication";
+                }
+            }
+            description "The valid list of problems for the entity.";
+        }
+        typedef tcm-monitoring {
+            type enumeration {
+                enum intrusive {
+                    description "none";
+                }
+                enum non-intrusive {
+                    description "none";
+                }
+            }
+            description "Monitoring types for the tandem connection monitoring function.";
+        }
+        typedef tcm-mode {
+            type enumeration {
+                enum operational {
+                    description "none";
+                }
+                enum transparent {
+                    description "none";
+                }
+                enum monitor {
+                    description "none";
+                }
+            }
+            description "List of value modes for the sink side of the tandem connection monitoring function.";
+        }
+        typedef ops-mnk-ttp-k-bit-rate {
+            type enumeration {
+                enum 40-g {
+                    description "none";
+                }
+                enum 100-g {
+                    description "none";
+                }
+            }
+            description "Provides an enumeration with the meaning of each 'k' value.";
+        }
+        typedef ops-mnk-ttp-problem-list {
+            type enumeration {
+                enum los {
+                    description "Loss of Signal";
+                }
+                enum lol {
+                    description "Loss of Lane Alignment";
+                }
+            }
+            description "The valid list of problems for the entity.";
+        }
+        typedef op-sn-ttp-problem-list {
+            type enumeration {
+                enum los {
+                    description "Loss of Signal";
+                }
+            }
+            description "The valid list of problems for the entity.";
+        }
+        typedef otm-n-k-bit-rates {
+            type enumeration {
+                enum 2.5-g {
+                    description "none";
+                }
+                enum 10-g {
+                    description "none";
+                }
+                enum 40-g {
+                    description "none";
+                }
+                enum 2.5-10-g {
+                    description "none";
+                }
+                enum 10-40-g {
+                    description "none";
+                }
+                enum 2.5-10-40-g {
+                    description "none";
+                }
+            }
+            description "Provides an enumeration with the meaning of each 'k' value.";
+        }
+        typedef domain-interface {
+            type enumeration {
+                enum intra-domain {
+                    description "none";
+                }
+                enum inter-domain {
+                    description "none";
+                }
+            }
+            description "This enumeration provides the options for the interface associated with OTMn.";
+        }
+        typedef otm-n-optical-reach {
+            type enumeration {
+                enum intra-office {
+                    description "none";
+                }
+                enum shorthaul {
+                    description "none";
+                }
+                enum longhaul {
+                    description "none";
+                }
+            }
+            description "The valid options for reach of the optical cable.";
+        }
+        typedef apr-status {
+            type enumeration {
+                enum on {
+                    description "none";
+                }
+                enum off {
+                    description "none";
+                }
+            }
+            description "The enumeration of the options for the Automatic Power Reduction Status.";
+        }
+        typedef ot-sn-ttp-problem-list {
+            type enumeration {
+                enum bdi-p {
+                    description "BDI-P (Backward Defect Indication - Payload); not co-exist with BDI-O or BDI";
+                }
+                enum bdi-o {
+                    description "BDI-O (Backward Defect Indication - Overhead); not co-exist with BDI-P or BDI";
+                }
+                enum bdi {
+                    description "BDI (Backward Defect Indication); not co-exist with BDI-P or BDI-O";
+                }
+                enum tim {
+                    description "TIM (Trail Trace Identifier Mismatch);";
+                }
+                enum los-p {
+                    description "-P (Loss of Signal - Payload); not co-exist with LOS-O or LOS";
+                }
+                enum los-o {
+                    description "LOS-O (Loss of Signal - Overhead); not co-exist with LOS-P or LOS";
+                }
+                enum los {
+                    description "LOS (Loss of Signal); not co-exist with LOS-P or LOS-O. ";
+                }
+            }
+            description "The valid list of problems for the entity.";
+        }
+        typedef ot-uk-ctp-adaptation {
+            type enumeration {
+                enum regular {
+                    description "i.e. OPSM/OTUk-a, OCh[r]/OTUk-a";
+                }
+                enum none {
+                    description "i.e. OPSM/OTUk-b, OCh[r]/OTUk-b";
+                }
+                enum vendor-specific {
+                    description "i.e. OCh[r]/OTUk-v";
+                }
+                enum functionally-standardized {
+                    description "i.e. OCh[r]/OTUkV";
+                }
+            }
+            description "The adaptation options for OTUk_ConnectionTermationPoints.";
+        }
+        typedef ot-uk-ctp-k-bit-rate {
+            type enumeration {
+                enum 2.5-g {
+                    description "none";
+                }
+                enum 10-g {
+                    description "none";
+                }
+                enum 40-g {
+                    description "none";
+                }
+                enum 100-g {
+                    description "none";
+                }
+            }
+            description "Provides an enumeration with the meaning of each 'k' value.";
+        }
+        typedef ot-uk-ctp-problem-list {
+            type enumeration {
+                enum lof {
+                    description "Loss of Frame";
+                }
+                enum ais {
+                    description "Alarm Indication Signal";
+                }
+                enum lom {
+                    description "Loss of MultiFrame";
+                }
+            }
+            description "The valid list of problems for the entity.";
+        }
+        typedef ot-uk-ttp-problem-list {
+            type enumeration {
+                enum tim {
+                    description "Trail Trace Identifier Mismatch";
+                }
+                enum deg {
+                    description "Signal Degraded";
+                }
+                enum bdi {
+                    description "Backward Defect Indication";
+                }
+                enum ssf {
+                    description "Server Signal Failure";
+                }
+            }
+            description "The valid list of problems for the entity.";
+        }
+        typedef monitored-direction {
+            type enumeration {
+                enum sink {
+                    description "none";
+                }
+                enum source {
+                    description "none";
+                }
+            }
+            description "The enumeration with the options for directionality for nonintrusive monitoring.";
+        }
+        typedef deg-thr-type {
+            type enumeration {
+                enum percentage {
+                    description "<p>Choice of % or Number of errored blocks</p>";
+                }
+                enum number-errored-blocks {
+                    description "<p>Number of % or blocks</p>";
+                }
+            }
+            description "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>";
+        }
+        typedef link-type {
+            type enumeration {
+                enum dwdm {
+                    description "none";
+                }
+                enum cwdm {
+                    description "none";
+                }
+                enum no-wdm {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef application-identifier-type {
+            type enumeration {
+                enum standard {
+                    description "none";
+                }
+                enum proprietary {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef printable-string {
+            type string;
+            description "none";
+        }
+        typedef date-and-time {
+            type string;
+            description "This primitive type defines the date and time according to the following structure:
+                'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
+                yyyy    '0000'..'9999'    year
+                MM        '01'..'12'            month
+                dd        '01'..'31'            day
+                hh        '00'..'23'            hour
+                mm        '00'..'59'            minute
+                ss        '00'..'59'            second
+                s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
+                Z        'Z'                    indicates UTC (rather than local time)
+                {+|-}    '+' or '-'            delta from UTC
+                HH        '00'..'23'            time zone difference in hours
+                Mm        '00'..'59'            time zone difference in minutes.";
+        }
+        typedef aps-channel {
+            type enumeration {
+                enum path {
+                    description "none";
+                }
+                enum tcm1 {
+                    description "none";
+                }
+                enum tcm2 {
+                    description "none";
+                }
+                enum tcm3 {
+                    description "none";
+                }
+                enum tcm4 {
+                    description "none";
+                }
+                enum tcm5 {
+                    description "none";
+                }
+                enum tcm6 {
+                    description "none";
+                }
+                enum section {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef bit-string {
+            type string;
+            description "This primitive type defines a bit oriented string.
+                The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).
+                The semantic of each bit position will be defined in the Documentation field of the attribute.";
+        }
+        typedef delay-measurement-role {
+            type enumeration {
+                enum controller {
+                    description "none";
+                }
+                enum responder {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef resize-operation-type {
+            type enumeration {
+                enum increase-bw {
+                    description "Increase Bandwidth";
+                }
+                enum decrease-bw {
+                    description "Decrease Bandwidth";
+                }
+            }
+            description "none";
+        }
+        typedef granularity-period-type {
+            type enumeration {
+                enum unknown {
+                    description "none";
+                }
+                enum period-15-min {
+                    description "none";
+                }
+                enum period-24-hours {
+                    description "none";
+                }
+            }
+            description "The enumeration with the options for granularity period of the performance data.";
+        }
+
+    /***********************
+    * package illustrative-object-diagrams
+    **********************/ 
+
+    /***********************
+    * package imported-information-object-classes
+    **********************/ 
+        /***********************
+        * package q.822
+        **********************/ 
+            grouping q.822-current-data-g {
+                leaf suspect-interval-flag {
+                    type boolean;
+                    description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period.";
+                }
+                leaf elapsed-time {
+                    type int64;
+                    description "none";
+                }
+                uses x.739-scanner-g;
+                description "none";
+            }
+            grouping q.822-history-data-g {
+                leaf history-data-id {
+                    type string;
+                    description "none";
+                }
+                leaf period-end-time {
+                    type yang:date-and-time;
+                    description "none";
+                }
+                leaf granularity-period {
+                    type granularity-period-type;
+                    description "none";
+                }
+                uses x.721-top-g;
+                description "none";
+            }
+
+        /***********************
+        * package x.739
+        **********************/ 
+            grouping x.739-scanner-g {
+                leaf scanner-id {
+                    type string;
+                    description "none";
+                }
+                leaf granularity-period {
+                    type granularity-period-type;
+                    description "none";
+                }
+                leaf administrative-state {
+                    type core-model:administrative-state;
+                    description "none";
+                }
+                uses x.721-top-g;
+                description "none";
+            }
+
+        /***********************
+        * package x.721
+        **********************/ 
+            grouping x.721-top-g {
+                leaf object-class {
+                    type object-identifier;
+                    description "ObjectClass ::= CHOICE{    globalForm    [0] OBJECT IDENTIFIER,
+                        localForm    [1] INTEGER}";
+                }
+                leaf name-binding {
+                    type object-identifier;
+                    description "none";
+                }
+                description "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types.";
+            }
+
+
+    /***********************
+    * package imported-data-types
+    **********************/ 
+        typedef object-instance {
+            type string;
+            description "none";
+        }
+        typedef name {
+            type string;
+            description "none";
+        }
+        typedef object-identifier {
+            type string;
+            description "none";
+        }
+        typedef generalized-time {
+            type string;
+            description "none";
+        }
+        typedef time-period {
+            type string;
+            description "This primitive Type is imported from X.739.";
+        }
+
+}
diff --git a/sdnr/model/yang/ietf-inet-types@2010-09-24.yang b/sdnr/model/yang/ietf-inet-types@2010-09-24.yang
new file mode 100644
index 0000000..a9fc2c8
--- /dev/null
+++ b/sdnr/model/yang/ietf-inet-types@2010-09-24.yang
@@ -0,0 +1,418 @@
+module ietf-inet-types {
+
+   namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+   prefix "inet";
+
+   organization
+    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+   contact
+    "WG Web:   <http://tools.ietf.org/wg/netmod/>
+     WG List:  <mailto:netmod@ietf.org>
+
+     WG Chair: David Partain
+               <mailto:david.partain@ericsson.com>
+
+     WG Chair: David Kessens
+               <mailto:david.kessens@nsn.com>
+
+     Editor:   Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>";
+
+   description
+    "This module contains a collection of generally useful derived
+     YANG data types for Internet addresses and related things.
+
+     Copyright (c) 2010 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, is permitted pursuant to, and subject to the license
+     terms contained in, the Simplified BSD License set forth in Section
+     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 6021; see
+     the RFC itself for full legal notices.";
+
+   revision 2010-09-24 {
+     description
+      "Initial revision.";
+     reference
+      "RFC 6021: Common YANG Data Types";
+   }
+
+   /*** collection of protocol field related types ***/
+
+   typedef ip-version {
+     type enumeration {
+       enum unknown {
+         value "0";
+         description
+          "An unknown or unspecified version of the Internet protocol.";
+       }
+       enum ipv4 {
+         value "1";
+         description
+          "The IPv4 protocol as defined in RFC 791.";
+       }
+       enum ipv6 {
+         value "2";
+         description
+          "The IPv6 protocol as defined in RFC 2460.";
+       }
+     }
+     description
+      "This value represents the version of the IP protocol.
+
+       In the value set and its semantics, this type is equivalent
+       to the InetVersion textual convention of the SMIv2.";
+     reference
+      "RFC  791: Internet Protocol
+       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+       RFC 4001: Textual Conventions for Internet Network Addresses";
+   }
+
+   typedef dscp {
+     type uint8 {
+       range "0..63";
+     }
+     description
+      "The dscp type represents a Differentiated Services Code-Point
+       that may be used for marking packets in a traffic stream.
+
+       In the value set and its semantics, this type is equivalent
+       to the Dscp textual convention of the SMIv2.";
+     reference
+      "RFC 3289: Management Information Base for the Differentiated
+                 Services Architecture
+       RFC 2474: Definition of the Differentiated Services Field
+                 (DS Field) in the IPv4 and IPv6 Headers
+       RFC 2780: IANA Allocation Guidelines For Values In
+                 the Internet Protocol and Related Headers";
+   }
+
+   typedef ipv6-flow-label {
+     type uint32 {
+       range "0..1048575";
+     }
+     description
+      "The flow-label type represents flow identifier or Flow Label
+       in an IPv6 packet header that may be used to discriminate
+       traffic flows.
+
+       In the value set and its semantics, this type is equivalent
+       to the IPv6FlowLabel textual convention of the SMIv2.";
+     reference
+      "RFC 3595: Textual Conventions for IPv6 Flow Label
+       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+   }
+
+   typedef port-number {
+     type uint16 {
+       range "0..65535";
+     }
+     description
+      "The port-number type represents a 16-bit port number of an
+       Internet transport layer protocol such as UDP, TCP, DCCP, or
+       SCTP.  Port numbers are assigned by IANA.  A current list of
+       all assignments is available from <http://www.iana.org/>.
+
+       Note that the port number value zero is reserved by IANA.  In
+       situations where the value zero does not make sense, it can
+       be excluded by subtyping the port-number type.
+
+       In the value set and its semantics, this type is equivalent
+       to the InetPortNumber textual convention of the SMIv2.";
+     reference
+      "RFC  768: User Datagram Protocol
+       RFC  793: Transmission Control Protocol
+       RFC 4960: Stream Control Transmission Protocol
+       RFC 4340: Datagram Congestion Control Protocol (DCCP)
+       RFC 4001: Textual Conventions for Internet Network Addresses";
+   }
+
+   /*** collection of autonomous system related types ***/
+
+   typedef as-number {
+     type uint32;
+     description
+      "The as-number type represents autonomous system numbers
+       which identify an Autonomous System (AS).  An AS is a set
+       of routers under a single technical administration, using
+       an interior gateway protocol and common metrics to route
+       packets within the AS, and using an exterior gateway
+       protocol to route packets to other ASs'.  IANA maintains
+       the AS number space and has delegated large parts to the
+       regional registries.
+
+       Autonomous system numbers were originally limited to 16
+       bits.  BGP extensions have enlarged the autonomous system
+       number space to 32 bits.  This type therefore uses an uint32
+       base type without a range restriction in order to support
+       a larger autonomous system number space.
+
+       In the value set and its semantics, this type is equivalent
+       to the InetAutonomousSystemNumber textual convention of
+       the SMIv2.";
+     reference
+      "RFC 1930: Guidelines for creation, selection, and registration
+                 of an Autonomous System (AS)
+       RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+       RFC 4893: BGP Support for Four-octet AS Number Space
+       RFC 4001: Textual Conventions for Internet Network Addresses";
+   }
+
+   /*** collection of IP address and hostname related types ***/
+
+   typedef ip-address {
+     type union {
+       type inet:ipv4-address;
+       type inet:ipv6-address;
+     }
+     description
+      "The ip-address type represents an IP address and is IP
+       version neutral.  The format of the textual representations
+       implies the IP version.";
+   }
+
+   typedef ipv4-address {
+     type string {
+       pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '(%[\p{N}\p{L}]+)?';
+     }
+     description
+       "The ipv4-address type represents an IPv4 address in
+        dotted-quad notation.  The IPv4 address may include a zone
+        index, separated by a % sign.
+
+        The zone index is used to disambiguate identical address
+        values.  For link-local addresses, the zone index will
+        typically be the interface index number or the name of an
+        interface.  If the zone index is not present, the default
+        zone of the device will be used.
+
+        The canonical format for the zone index is the numerical
+        format";
+   }
+
+   typedef ipv6-address {
+     type string {
+       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+             + '(%[\p{N}\p{L}]+)?';
+       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+             + '(%.+)?';
+     }
+     description
+      "The ipv6-address type represents an IPv6 address in full,
+       mixed, shortened, and shortened-mixed notation.  The IPv6
+       address may include a zone index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format of IPv6 addresses uses the compressed
+       format described in RFC 4291, Section 2.2, item 2 with the
+       following additional rules: the :: substitution must be
+       applied to the longest sequence of all-zero 16-bit chunks
+       in an IPv6 address.  If there is a tie, the first sequence
+       of all-zero 16-bit chunks is replaced by ::.  Single
+       all-zero 16-bit chunks are not compressed.  The canonical
+       format uses lowercase characters and leading zeros are
+       not allowed.  The canonical format for the zone index is
+       the numerical format as described in RFC 4007, Section
+       11.2.";
+     reference
+      "RFC 4291: IP Version 6 Addressing Architecture
+       RFC 4007: IPv6 Scoped Address Architecture
+       RFC 5952: A Recommendation for IPv6 Address Text Representation";
+   }
+
+   typedef ip-prefix {
+     type union {
+       type inet:ipv4-prefix;
+       type inet:ipv6-prefix;
+     }
+     description
+      "The ip-prefix type represents an IP prefix and is IP
+       version neutral.  The format of the textual representations
+       implies the IP version.";
+   }
+
+   typedef ipv4-prefix {
+     type string {
+       pattern
+          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+        +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+        + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+     }
+     description
+      "The ipv4-prefix type represents an IPv4 address prefix.
+       The prefix length is given by the number following the
+       slash character and must be less than or equal to 32.
+
+       A prefix length value of n corresponds to an IP address
+       mask that has n contiguous 1-bits from the most
+       significant bit (MSB) and all other bits set to 0.
+
+       The canonical format of an IPv4 prefix has all bits of
+       the IPv4 address set to zero that are not part of the
+       IPv4 prefix.";
+   }
+
+   typedef ipv6-prefix {
+     type string {
+       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+             + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+             + '(/.+)';
+     }
+     description
+      "The ipv6-prefix type represents an IPv6 address prefix.
+       The prefix length is given by the number following the
+       slash character and must be less than or equal 128.
+
+       A prefix length value of n corresponds to an IP address
+       mask that has n contiguous 1-bits from the most
+       significant bit (MSB) and all other bits set to 0.
+
+       The IPv6 address should have all bits that do not belong
+       to the prefix set to zero.
+
+       The canonical format of an IPv6 prefix has all bits of
+       the IPv6 address set to zero that are not part of the
+       IPv6 prefix.  Furthermore, IPv6 address is represented
+       in the compressed format described in RFC 4291, Section
+       2.2, item 2 with the following additional rules: the ::
+       substitution must be applied to the longest sequence of
+       all-zero 16-bit chunks in an IPv6 address.  If there is
+       a tie, the first sequence of all-zero 16-bit chunks is
+       replaced by ::.  Single all-zero 16-bit chunks are not
+       compressed.  The canonical format uses lowercase
+       characters and leading zeros are not allowed.";
+     reference
+      "RFC 4291: IP Version 6 Addressing Architecture";
+   }
+
+   /*** collection of domain name and URI types ***/
+
+   typedef domain-name {
+     type string {
+       pattern '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+            +  '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+            +  '|\.';
+       length "1..253";
+     }
+     description
+      "The domain-name type represents a DNS domain name.  The
+       name SHOULD be fully qualified whenever possible.
+
+       Internet domain names are only loosely specified.  Section
+       3.5 of RFC 1034 recommends a syntax (modified in Section
+       2.1 of RFC 1123).  The pattern above is intended to allow
+       for current practice in domain name use, and some possible
+       future expansion.  It is designed to hold various types of
+       domain names, including names used for A or AAAA records
+       (host names) and other records, such as SRV records.  Note
+       that Internet host names have a stricter syntax (described
+       in RFC 952) than the DNS recommendations in RFCs 1034 and
+       1123, and that systems that want to store host names in
+       schema nodes using the domain-name type are recommended to
+       adhere to this stricter standard to ensure interoperability.
+
+       The encoding of DNS names in the DNS protocol is limited
+       to 255 characters.  Since the encoding consists of labels
+       prefixed by a length bytes and there is a trailing NULL
+       byte, only 253 characters can appear in the textual dotted
+       notation.
+
+       The description clause of schema nodes using the domain-name
+       type MUST describe when and how these names are resolved to
+       IP addresses.  Note that the resolution of a domain-name value
+       may require to query multiple DNS records (e.g., A for IPv4
+       and AAAA for IPv6).  The order of the resolution process and
+       which DNS record takes precedence can either be defined
+       explicitely or it may depend on the configuration of the
+       resolver.
+
+       Domain-name values use the US-ASCII encoding.  Their canonical
+       format uses lowercase US-ASCII characters.  Internationalized
+       domain names MUST be encoded in punycode as described in RFC
+       3492";
+     reference
+      "RFC  952: DoD Internet Host Table Specification
+       RFC 1034: Domain Names - Concepts and Facilities
+       RFC 1123: Requirements for Internet Hosts -- Application
+                 and Support
+       RFC 2782: A DNS RR for specifying the location of services
+                 (DNS SRV)
+       RFC 3492: Punycode: A Bootstring encoding of Unicode for
+                 Internationalized Domain Names in Applications
+                 (IDNA)
+       RFC 5891: Internationalizing Domain Names in Applications
+                 (IDNA): Protocol";
+   }
+
+   typedef host {
+     type union {
+       type inet:ip-address;
+       type inet:domain-name;
+     }
+     description
+      "The host type represents either an IP address or a DNS
+       domain name.";
+   }
+
+   typedef uri {
+     type string;
+     description
+      "The uri type represents a Uniform Resource Identifier
+       (URI) as defined by STD 66.
+
+       Objects using the uri type MUST be in US-ASCII encoding,
+       and MUST be normalized as described by RFC 3986 Sections
+       6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+       percent-encoding is removed, and all case-insensitive
+       characters are set to lowercase except for hexadecimal
+       digits, which are normalized to uppercase as described in
+       Section 6.2.2.1.
+
+       The purpose of this normalization is to help provide
+       unique URIs.  Note that this normalization is not
+       sufficient to provide uniqueness.  Two URIs that are
+       textually distinct after this normalization may still be
+       equivalent.
+
+       Objects using the uri type may restrict the schemes that
+       they permit.  For example, 'data:' and 'urn:' schemes
+       might not be appropriate.
+
+       A zero-length URI is not a valid URI.  This can be used to
+       express 'URI absent' where required.
+
+       In the value set and its semantics, this type is equivalent
+       to the Uri SMIv2 textual convention defined in RFC 5017.";
+     reference
+      "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+       RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                 Group: Uniform Resource Identifiers (URIs), URLs,
+                 and Uniform Resource Names (URNs): Clarifications
+                 and Recommendations
+       RFC 5017: MIB Textual Conventions for Uniform Resource
+                 Identifiers (URIs)";
+   }
+
+ }
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-inet-types@2013-07-15.yang b/sdnr/model/yang/ietf-inet-types@2013-07-15.yang
new file mode 100644
index 0000000..0ca5628
--- /dev/null
+++ b/sdnr/model/yang/ietf-inet-types@2013-07-15.yang
@@ -0,0 +1,457 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-acm@2012-02-22.yang b/sdnr/model/yang/ietf-netconf-acm@2012-02-22.yang
new file mode 100644
index 0000000..05be765
--- /dev/null
+++ b/sdnr/model/yang/ietf-netconf-acm@2012-02-22.yang
@@ -0,0 +1,449 @@
+module ietf-netconf-acm {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm";
+
+  prefix "nacm";
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netconf/>
+     WG List:  <mailto:netconf@ietf.org>
+
+     WG Chair: Mehmet Ersue
+               <mailto:mehmet.ersue@nsn.com>
+
+     WG Chair: Bert Wijnen
+               <mailto:bertietf@bwijnen.net>
+
+     Editor:   Andy Bierman
+               <mailto:andy@yumaworks.com>
+
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>";
+
+  description
+    "NETCONF Access Control Model.
+
+     Copyright (c) 2012 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD
+     License set forth in Section 4.c of the IETF Trust's
+     Legal Provisions Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 6536; see
+     the RFC itself for full legal notices.";
+
+  revision "2012-02-22" {
+    description
+      "Initial version";
+    reference
+      "RFC 6536: Network Configuration Protocol (NETCONF)
+                 Access Control Model";
+  }
+
+  /*
+   * Extension statements
+   */
+
+  extension default-deny-write {
+    description
+      "Used to indicate that the data model node
+       represents a sensitive security system parameter.
+
+       If present, and the NACM module is enabled (i.e.,
+       /nacm/enable-nacm object equals 'true'), the NETCONF server
+       will only allow the designated 'recovery session' to have
+       write access to the node.  An explicit access control rule is
+       required for all other users.
+
+       The 'default-deny-write' extension MAY appear within a data
+       definition statement.  It is ignored otherwise.";
+  }
+
+  extension default-deny-all {
+    description
+      "Used to indicate that the data model node
+       controls a very sensitive security system parameter.
+
+       If present, and the NACM module is enabled (i.e.,
+       /nacm/enable-nacm object equals 'true'), the NETCONF server
+       will only allow the designated 'recovery session' to have
+       read, write, or execute access to the node.  An explicit
+       access control rule is required for all other users.
+
+       The 'default-deny-all' extension MAY appear within a data
+       definition statement, 'rpc' statement, or 'notification'
+       statement.  It is ignored otherwise.";
+  }
+
+  /*
+   * Derived types
+   */
+
+  typedef user-name-type {
+    type string {
+      length "1..max";
+    }
+    description
+      "General Purpose Username string.";
+  }
+
+  typedef matchall-string-type {
+    type string {
+      pattern "\*";
+    }
+    description
+      "The string containing a single asterisk '*' is used
+       to conceptually represent all possible values
+       for the particular leaf using this data type.";
+  }
+
+  typedef access-operations-type {
+    type bits {
+      bit create {
+        description
+          "Any protocol operation that creates a
+           new data node.";
+      }
+      bit read {
+        description
+          "Any protocol operation or notification that
+           returns the value of a data node.";
+      }
+      bit update {
+        description
+          "Any protocol operation that alters an existing
+           data node.";
+      }
+      bit delete {
+        description
+          "Any protocol operation that removes a data node.";
+      }
+      bit exec {
+        description
+          "Execution access to the specified protocol operation.";
+      }
+    }
+    description
+      "NETCONF Access Operation.";
+  }
+
+  typedef group-name-type {
+    type string {
+      length "1..max";
+      pattern "[^\*].*";
+    }
+    description
+      "Name of administrative group to which
+       users can be assigned.";
+  }
+
+  typedef action-type {
+    type enumeration {
+      enum permit {
+        description
+          "Requested action is permitted.";
+      }
+      enum deny {
+        description
+          "Requested action is denied.";
+      }
+    }
+    description
+      "Action taken by the server when a particular
+       rule matches.";
+  }
+
+  typedef node-instance-identifier {
+    type yang:xpath1.0;
+    description
+      "Path expression used to represent a special
+       data node instance identifier string.
+
+       A node-instance-identifier value is an
+       unrestricted YANG instance-identifier expression.
+       All the same rules as an instance-identifier apply
+       except predicates for keys are optional.  If a key
+       predicate is missing, then the node-instance-identifier
+       represents all possible server instances for that key.
+
+       This XPath expression is evaluated in the following context:
+
+        o  The set of namespace declarations are those in scope on
+           the leaf element where this type is used.
+
+        o  The set of variable bindings contains one variable,
+           'USER', which contains the name of the user of the current
+            session.
+
+        o  The function library is the core function library, but
+           note that due to the syntax restrictions of an
+           instance-identifier, no functions are allowed.
+
+        o  The context node is the root node in the data tree.";
+  }
+
+  /*
+   * Data definition statements
+   */
+
+  container nacm {
+    nacm:default-deny-all;
+
+    description
+      "Parameters for NETCONF Access Control Model.";
+
+    leaf enable-nacm {
+      type boolean;
+      default true;
+      description
+        "Enables or disables all NETCONF access control
+         enforcement.  If 'true', then enforcement
+         is enabled.  If 'false', then enforcement
+         is disabled.";
+    }
+
+    leaf read-default {
+      type action-type;
+      default "permit";
+      description
+        "Controls whether read access is granted if
+         no appropriate rule is found for a
+         particular read request.";
+    }
+
+    leaf write-default {
+      type action-type;
+      default "deny";
+      description
+        "Controls whether create, update, or delete access
+         is granted if no appropriate rule is found for a
+         particular write request.";
+    }
+
+    leaf exec-default {
+      type action-type;
+      default "permit";
+      description
+        "Controls whether exec access is granted if no appropriate
+         rule is found for a particular protocol operation request.";
+    }
+
+    leaf enable-external-groups {
+      type boolean;
+      default true;
+      description
+        "Controls whether the server uses the groups reported by the
+         NETCONF transport layer when it assigns the user to a set of
+         NACM groups.  If this leaf has the value 'false', any group
+         names reported by the transport layer are ignored by the
+         server.";
+    }
+
+    leaf denied-operations {
+      type yang:zero-based-counter32;
+      config false;
+      mandatory true;
+      description
+        "Number of times since the server last restarted that a
+         protocol operation request was denied.";
+    }
+
+    leaf denied-data-writes {
+      type yang:zero-based-counter32;
+      config false;
+      mandatory true;
+      description
+        "Number of times since the server last restarted that a
+         protocol operation request to alter
+         a configuration datastore was denied.";
+    }
+
+    leaf denied-notifications {
+      type yang:zero-based-counter32;
+      config false;
+      mandatory true;
+      description
+        "Number of times since the server last restarted that
+         a notification was dropped for a subscription because
+         access to the event type was denied.";
+    }
+
+    container groups {
+      description
+        "NETCONF Access Control Groups.";
+
+      list group {
+        key name;
+
+        description
+          "One NACM Group Entry.  This list will only contain
+           configured entries, not any entries learned from
+           any transport protocols.";
+
+        leaf name {
+          type group-name-type;
+          description
+            "Group name associated with this entry.";
+        }
+
+        leaf-list user-name {
+          type user-name-type;
+          description
+            "Each entry identifies the username of
+             a member of the group associated with
+             this entry.";
+        }
+      }
+    }
+
+    list rule-list {
+      key "name";
+      ordered-by user;
+      description
+        "An ordered collection of access control rules.";
+
+      leaf name {
+        type string {
+          length "1..max";
+        }
+        description
+          "Arbitrary name assigned to the rule-list.";
+      }
+      leaf-list group {
+        type union {
+          type matchall-string-type;
+          type group-name-type;
+        }
+        description
+          "List of administrative groups that will be
+           assigned the associated access rights
+           defined by the 'rule' list.
+
+           The string '*' indicates that all groups apply to the
+           entry.";
+      }
+
+      list rule {
+        key "name";
+        ordered-by user;
+        description
+          "One access control rule.
+
+           Rules are processed in user-defined order until a match is
+           found.  A rule matches if 'module-name', 'rule-type', and
+           'access-operations' match the request.  If a rule
+           matches, the 'action' leaf determines if access is granted
+           or not.";
+
+        leaf name {
+          type string {
+            length "1..max";
+          }
+          description
+            "Arbitrary name assigned to the rule.";
+        }
+
+        leaf module-name {
+          type union {
+            type matchall-string-type;
+            type string;
+          }
+          default "*";
+          description
+            "Name of the module associated with this rule.
+
+             This leaf matches if it has the value '*' or if the
+             object being accessed is defined in the module with the
+             specified module name.";
+        }
+        choice rule-type {
+          description
+            "This choice matches if all leafs present in the rule
+             match the request.  If no leafs are present, the
+             choice matches all requests.";
+          case protocol-operation {
+            leaf rpc-name {
+              type union {
+                type matchall-string-type;
+                type string;
+              }
+              description
+                "This leaf matches if it has the value '*' or if
+                 its value equals the requested protocol operation
+                 name.";
+            }
+          }
+          case notification {
+            leaf notification-name {
+              type union {
+                type matchall-string-type;
+                type string;
+              }
+              description
+                "This leaf matches if it has the value '*' or if its
+                 value equals the requested notification name.";
+            }
+          }
+          case data-node {
+            leaf path {
+              type node-instance-identifier;
+              mandatory true;
+              description
+                "Data Node Instance Identifier associated with the
+                 data node controlled by this rule.
+
+                 Configuration data or state data instance
+                 identifiers start with a top-level data node.  A
+                 complete instance identifier is required for this
+                 type of path value.
+
+                 The special value '/' refers to all possible
+                 datastore contents.";
+            }
+          }
+        }
+
+        leaf access-operations {
+          type union {
+            type matchall-string-type;
+            type access-operations-type;
+          }
+          default "*";
+          description
+            "Access operations associated with this rule.
+
+             This leaf matches if it has the value '*' or if the
+             bit corresponding to the requested operation is set.";
+        }
+
+        leaf action {
+          type action-type;
+          mandatory true;
+          description
+            "The access control action associated with the
+             rule.  If a rule is determined to match a
+             particular request, then this object is used
+             to determine whether to permit or deny the
+             request.";
+        }
+
+        leaf comment {
+          type string;
+          description
+            "A textual description of the access rule.";
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-monitoring@2010-10-04.yang b/sdnr/model/yang/ietf-netconf-monitoring@2010-10-04.yang
new file mode 100644
index 0000000..48a0e56
--- /dev/null
+++ b/sdnr/model/yang/ietf-netconf-monitoring@2010-10-04.yang
@@ -0,0 +1,558 @@
+module ietf-netconf-monitoring {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
+  prefix "ncm";
+
+  import ietf-yang-types { prefix yang; }
+  import ietf-inet-types { prefix inet; }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netconf/>
+     WG List:  <mailto:netconf@ietf.org>
+
+     WG Chair: Mehmet Ersue
+               <mailto:mehmet.ersue@nsn.com>
+
+     WG Chair: Bert Wijnen
+               <mailto:bertietf@bwijnen.net>
+
+     Editor:   Mark Scott
+               <mailto:mark.scott@ericsson.com>
+
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>";
+
+  description
+    "NETCONF Monitoring Module.
+     All elements in this module are read-only.
+
+     Copyright (c) 2010 IETF Trust and the persons identified as
+     authors of the code. All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD
+     License set forth in Section 4.c of the IETF Trust's
+     Legal Provisions Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 6022; see
+     the RFC itself for full legal notices.";
+
+  revision 2010-10-04 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 6022: YANG Module for NETCONF Monitoring";
+  }
+
+  typedef netconf-datastore-type {
+    type enumeration {
+      enum running;
+      enum candidate;
+      enum startup;
+    }
+    description
+      "Enumeration of possible NETCONF datastore types.";
+    reference
+      "RFC 4741: NETCONF Configuration Protocol";
+  }
+
+  identity transport {
+    description
+      "Base identity for NETCONF transport types.";
+  }
+
+  identity netconf-ssh {
+    base transport;
+    description
+      "NETCONF over Secure Shell (SSH).";
+    reference
+      "RFC 4742: Using the NETCONF Configuration Protocol
+                 over Secure SHell (SSH)";
+  }
+
+  identity netconf-soap-over-beep {
+    base transport;
+    description
+      "NETCONF over Simple Object Access Protocol (SOAP) over
+       Blocks Extensible Exchange Protocol (BEEP).";
+    reference
+      "RFC 4743: Using NETCONF over the Simple Object
+                 Access Protocol (SOAP)";
+  }
+
+  identity netconf-soap-over-https {
+    base transport;
+    description
+      "NETCONF over Simple Object Access Protocol (SOAP)
+      over Hypertext Transfer Protocol Secure (HTTPS).";
+    reference
+      "RFC 4743: Using NETCONF over the Simple Object
+                 Access Protocol (SOAP)";
+  }
+
+  identity netconf-beep {
+    base transport;
+    description
+      "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
+    reference
+      "RFC 4744: Using the NETCONF Protocol over the
+                 Blocks Extensible Exchange Protocol (BEEP)";
+  }
+
+  identity netconf-tls {
+    base transport;
+    description
+      "NETCONF over Transport Layer Security (TLS).";
+    reference
+      "RFC 5539: NETCONF over Transport Layer Security (TLS)";
+  }
+
+  identity schema-format {
+    description
+      "Base identity for data model schema languages.";
+  }
+
+  identity xsd {
+    base schema-format;
+    description
+      "W3C XML Schema Definition.";
+    reference
+      "W3C REC REC-xmlschema-1-20041028:
+         XML Schema Part 1: Structures";
+  }
+
+  identity yang {
+    base schema-format;
+    description
+      "The YANG data modeling language for NETCONF.";
+    reference
+      "RFC 6020:  YANG - A Data Modeling Language for the
+                  Network Configuration Protocol (NETCONF)";
+  }
+
+  identity yin {
+    base schema-format;
+    description
+      "The YIN syntax for YANG.";
+    reference
+      "RFC 6020:  YANG - A Data Modeling Language for the
+                  Network Configuration Protocol (NETCONF)";
+  }
+
+  identity rng {
+    base schema-format;
+    description
+      "Regular Language for XML Next Generation (RELAX NG).";
+    reference
+      "ISO/IEC 19757-2:2008: RELAX NG";
+  }
+
+  identity rnc {
+    base schema-format;
+    description
+      "Relax NG Compact Syntax";
+    reference
+      "ISO/IEC 19757-2:2008: RELAX NG";
+  }
+
+  grouping common-counters {
+    description
+      "Counters that exist both per session, and also globally,
+       accumulated from all sessions.";
+
+    leaf in-rpcs {
+      type yang:zero-based-counter32;
+      description
+        "Number of correct <rpc> messages received.";
+    }
+    leaf in-bad-rpcs {
+      type yang:zero-based-counter32;
+      description
+        "Number of messages received when an <rpc> message was expected,
+         that were not correct <rpc> messages.  This includes XML parse
+         errors and errors on the rpc layer.";
+    }
+    leaf out-rpc-errors {
+      type yang:zero-based-counter32;
+      description
+        "Number of <rpc-reply> messages sent that contained an
+         <rpc-error> element.";
+    }
+    leaf out-notifications {
+      type yang:zero-based-counter32;
+      description
+        "Number of <notification> messages sent.";
+    }
+  }
+
+  container netconf-state {
+    config false;
+    description
+      "The netconf-state container is the root of the monitoring
+       data model.";
+
+    container capabilities {
+      description
+        "Contains the list of NETCONF capabilities supported by the
+         server.";
+
+      leaf-list capability {
+        type inet:uri;
+        description
+          "List of NETCONF capabilities supported by the server.";
+      }
+    }
+
+    container datastores {
+      description
+        "Contains the list of NETCONF configuration datastores.";
+
+      list datastore {
+        key name;
+        description
+          "List of NETCONF configuration datastores supported by
+           the NETCONF server and related information.";
+
+        leaf name {
+          type netconf-datastore-type;
+          description
+            "Name of the datastore associated with this list entry.";
+        }
+        container locks {
+          presence
+            "This container is present only if the datastore
+             is locked.";
+          description
+            "The NETCONF <lock> and <partial-lock> operations allow
+             a client to lock specific resources in a datastore.  The
+             NETCONF server will prevent changes to the locked
+             resources by all sessions except the one that acquired
+             the lock(s).
+
+             Monitoring information is provided for each datastore
+             entry including details such as the session that acquired
+             the lock, the type of lock (global or partial) and the
+             list of locked resources.  Multiple locks per datastore
+             are supported.";
+
+          grouping lock-info {
+            description
+              "Lock related parameters, common to both global and
+               partial locks.";
+
+            leaf locked-by-session {
+              type uint32;
+              mandatory true;
+              description
+                "The session ID of the session that has locked
+                 this resource.  Both a global lock and a partial
+                 lock MUST contain the NETCONF session-id.
+
+                 If the lock is held by a session that is not managed
+                 by the NETCONF server (e.g., a CLI session), a session
+                 id of 0 (zero) is reported.";
+              reference
+                "RFC 4741: NETCONF Configuration Protocol";
+            }
+            leaf locked-time {
+              type yang:date-and-time;
+              mandatory true;
+              description
+                "The date and time of when the resource was
+                 locked.";
+            }
+          }
+
+          choice lock-type {
+            description
+              "Indicates if a global lock or a set of partial locks
+               are set.";
+
+            container global-lock {
+              description
+                "Present if the global lock is set.";
+              uses lock-info;
+            }
+
+            list partial-lock {
+              key lock-id;
+              description
+                "List of partial locks.";
+              reference
+                "RFC 5717: Partial Lock Remote Procedure Call (RPC) for
+                           NETCONF";
+
+              leaf lock-id {
+                type uint32;
+                description
+                  "This is the lock id returned in the <partial-lock>
+                   response.";
+              }
+              uses lock-info;
+              leaf-list select {
+                type yang:xpath1.0;
+                min-elements 1;
+                description
+                  "The xpath expression that was used to request
+                   the lock.  The select expression indicates the
+                   original intended scope of the lock.";
+              }
+              leaf-list locked-node {
+                type instance-identifier;
+                description
+                  "The list of instance-identifiers (i.e., the
+                   locked nodes).
+
+                   The scope of the partial lock is defined by the list
+                   of locked nodes.";
+              }
+            }
+          }
+        }
+      }
+    }
+
+    container schemas {
+      description
+        "Contains the list of data model schemas supported by the
+         server.";
+
+      list schema {
+        key "identifier version format";
+
+        description
+          "List of data model schemas supported by the server.";
+
+        leaf identifier {
+          type string;
+          description
+            "Identifier to uniquely reference the schema.  The
+             identifier is used in the <get-schema> operation and may
+             be used for other purposes such as file retrieval.
+
+             For modeling languages that support or require a data
+             model name (e.g., YANG module name) the identifier MUST
+             match that name.  For YANG data models, the identifier is
+             the name of the module or submodule.  In other cases, an
+             identifier such as a filename MAY be used instead.";
+        }
+        leaf version {
+          type string;
+          description
+            "Version of the schema supported.  Multiple versions MAY be
+             supported simultaneously by a NETCONF server.  Each
+             version MUST be reported individually in the schema list,
+             i.e., with same identifier, possibly different location,
+             but different version.
+
+             For YANG data models, version is the value of the most
+             recent YANG 'revision' statement in the module or
+             submodule, or the empty string if no 'revision' statement
+             is present.";
+        }
+        leaf format {
+          type identityref {
+            base schema-format;
+          }
+          description
+            "The data modeling language the schema is written
+             in (currently xsd, yang, yin, rng, or rnc).
+             For YANG data models, 'yang' format MUST be supported and
+             'yin' format MAY also be provided.";
+        }
+        leaf namespace {
+          type inet:uri;
+          mandatory true;
+          description
+            "The XML namespace defined by the data model.
+
+             For YANG data models, this is the module's namespace.
+             If the list entry describes a submodule, this field
+             contains the namespace of the module to which the
+             submodule belongs.";
+        }
+        leaf-list location {
+          type union {
+            type enumeration {
+              enum "NETCONF";
+            }
+            type inet:uri;
+          }
+          description
+            "One or more locations from which the schema can be
+             retrieved.  This list SHOULD contain at least one
+             entry per schema.
+
+             A schema entry may be located on a remote file system
+             (e.g., reference to file system for ftp retrieval) or
+             retrieved directly from a server supporting the
+             <get-schema> operation (denoted by the value 'NETCONF').";
+        }
+      }
+    }
+
+    container sessions {
+      description
+        "The sessions container includes session-specific data for
+         NETCONF management sessions.  The session list MUST include
+         all currently active NETCONF sessions.";
+
+      list session {
+        key session-id;
+        description
+          "All NETCONF sessions managed by the NETCONF server
+           MUST be reported in this list.";
+
+        leaf session-id {
+          type uint32 {
+            range "1..max";
+          }
+          description
+            "Unique identifier for the session.  This value is the
+             NETCONF session identifier, as defined in RFC 4741.";
+          reference
+            "RFC 4741: NETCONF Configuration Protocol";
+        }
+        leaf transport {
+          type identityref {
+            base transport;
+          }
+          mandatory true;
+          description
+            "Identifies the transport for each session, e.g.,
+            'netconf-ssh', 'netconf-soap', etc.";
+        }
+        leaf username  {
+          type string;
+          mandatory true;
+          description
+            "The username is the client identity that was authenticated
+            by the NETCONF transport protocol.  The algorithm used to
+            derive the username is NETCONF transport protocol specific
+            and in addition specific to the authentication mechanism
+            used by the NETCONF transport protocol.";
+        }
+        leaf source-host {
+          type inet:host;
+          description
+            "Host identifier of the NETCONF client.  The value
+             returned is implementation specific (e.g., hostname,
+             IPv4 address, IPv6 address)";
+        }
+        leaf login-time {
+          type yang:date-and-time;
+          mandatory true;
+          description
+            "Time at the server at which the session was established.";
+        }
+        uses common-counters {
+          description
+            "Per-session counters.  Zero based with following reset
+             behaviour:
+               - at start of a session
+               - when max value is reached";
+        }
+      }
+    }
+
+    container statistics {
+      description
+        "Statistical data pertaining to the NETCONF server.";
+
+      leaf netconf-start-time {
+        type yang:date-and-time;
+        description
+          "Date and time at which the management subsystem was
+           started.";
+      }
+      leaf in-bad-hellos {
+        type yang:zero-based-counter32;
+        description
+          "Number of sessions silently dropped because an
+          invalid <hello> message was received.  This includes <hello>
+          messages with a 'session-id' attribute, bad namespace, and
+          bad capability declarations.";
+      }
+      leaf in-sessions {
+        type yang:zero-based-counter32;
+        description
+          "Number of sessions started.  This counter is incremented
+           when a <hello> message with a <session-id> is sent.
+
+          'in-sessions' - 'in-bad-hellos' =
+              'number of correctly started netconf sessions'";
+      }
+      leaf dropped-sessions {
+        type yang:zero-based-counter32;
+        description
+          "Number of sessions that were abnormally terminated, e.g.,
+           due to idle timeout or transport close.  This counter is not
+           incremented when a session is properly closed by a
+           <close-session> operation, or killed by a <kill-session>
+           operation.";
+      }
+      uses common-counters {
+        description
+          "Global counters, accumulated from all sessions.
+           Zero based with following reset behaviour:
+             - re-initialization of NETCONF server
+             - when max value is reached";
+      }
+    }
+  }
+
+  rpc get-schema {
+    description
+      "This operation is used to retrieve a schema from the
+       NETCONF server.
+
+       Positive Response:
+         The NETCONF server returns the requested schema.
+
+       Negative Response:
+         If requested schema does not exist, the <error-tag> is
+         'invalid-value'.
+
+         If more than one schema matches the requested parameters, the
+         <error-tag> is 'operation-failed', and <error-app-tag> is
+         'data-not-unique'.";
+
+    input {
+      leaf identifier {
+        type string;
+        mandatory true;
+        description
+          "Identifier for the schema list entry.";
+      }
+      leaf version {
+        type string;
+        description
+          "Version of the schema requested.  If this parameter is not
+           present, and more than one version of the schema exists on
+           the server, a 'data-not-unique' error is returned, as
+           described above.";
+      }
+      leaf format {
+        type identityref {
+          base schema-format;
+        }
+        description
+           "The data modeling language of the schema.  If this
+            parameter is not present, and more than one formats of
+            the schema exists on the server, a 'data-not-unique' error
+            is returned, as described above.";
+      }
+    }
+    output {
+        anyxml data {
+          description
+            "Contains the schema content.";
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-partial-lock@2009-10-19.yang b/sdnr/model/yang/ietf-netconf-partial-lock@2009-10-19.yang
new file mode 100644
index 0000000..13658ac
--- /dev/null
+++ b/sdnr/model/yang/ietf-netconf-partial-lock@2009-10-19.yang
@@ -0,0 +1,83 @@
+module ietf-netconf-partial-lock {
+
+  namespace urn:ietf:params:xml:ns:netconf:partial-lock:1.0;
+  prefix pl;
+
+  // needed to force data type of select string to be corect
+  import ietf-yang-types { prefix yang; }
+
+  organization "IETF Network Configuration (netconf) Working Group";
+
+  contact
+   "Netconf Working Group
+    Mailing list: netconf@ietf.org
+    Web: http://www.ietf.org/html.charters/netconf-charter.html
+
+    Balazs Lengyel
+    Ericsson
+    balazs.lengyel@ericsson.com";
+
+  description
+   "This YANG module defines the <partial-lock> and
+    <partial-unlock> operations.";
+
+  revision 2009-10-19 {
+    description
+     "Initial version, published as RFC 5717.";
+  }
+
+  typedef lock-id-type {
+    type uint32;
+    description
+     "A number identifying a specific partial-lock granted to a session.
+      It is allocated by the system, and SHOULD be used in the
+      partial-unlock operation.";
+  }
+
+  rpc partial-lock {
+    description
+     "A NETCONF operation that locks parts of the running datastore.";
+    input {
+      leaf-list select {
+        //type string;
+        type yang:xpath1.0;
+        min-elements 1;
+        description
+         "XPath expression that specifies the scope of the lock.
+          An Instance Identifier expression MUST be used unless the
+          :xpath capability is supported, in which case any XPath 1.0
+          expression is allowed.";
+      }
+    }
+    output {
+      leaf lock-id {
+        type lock-id-type;
+        mandatory true;
+        description
+         "Identifies the lock, if granted.  The lock-id SHOULD be
+          used in the partial-unlock rpc.";
+      }
+      leaf-list locked-node {
+        type instance-identifier;
+        min-elements 1;
+        description
+         "List of locked nodes in the running datastore";
+      }
+    }
+  }
+
+  rpc partial-unlock {
+    description
+     "A NETCONF operation that releases a previously acquired
+      partial-lock.";
+    input {
+      leaf lock-id {
+        type lock-id-type;
+        mandatory true;
+        description
+         "Identifies the lock to be released.  MUST be the value
+          received in the response to a partial-lock operation.";
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-with-defaults@2011-06-01.yang b/sdnr/model/yang/ietf-netconf-with-defaults@2011-06-01.yang
new file mode 100644
index 0000000..81d7f0b
--- /dev/null
+++ b/sdnr/model/yang/ietf-netconf-with-defaults@2011-06-01.yang
@@ -0,0 +1,140 @@
+module ietf-netconf-with-defaults {
+
+   namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults";
+
+   prefix ncwd;
+
+   import ietf-netconf { prefix nc; }
+
+   organization
+    "IETF NETCONF (Network Configuration Protocol) Working Group";
+
+   contact
+    "WG Web:   <http://tools.ietf.org/wg/netconf/>
+
+     WG List:  <netconf@ietf.org>
+
+     WG Chair: Bert Wijnen
+               <bertietf@bwijnen.net>
+
+     WG Chair: Mehmet Ersue
+               <mehmet.ersue@nsn.com>
+
+     Editor: Andy Bierman
+             <andy.bierman@brocade.com>
+
+     Editor: Balazs Lengyel
+             <balazs.lengyel@ericsson.com>";
+
+   description
+    "This module defines an extension to the NETCONF protocol
+     that allows the NETCONF client to control how default
+     values are handled by the server in particular NETCONF
+     operations.
+
+     Copyright (c) 2011 IETF Trust and the persons identified as
+     the document authors.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 6243; see
+     the RFC itself for full legal notices.";
+
+   revision 2011-06-01 {
+     description
+       "Initial version.";
+     reference
+      "RFC 6243: With-defaults Capability for NETCONF";
+   }
+
+   typedef with-defaults-mode {
+      description
+        "Possible modes to report default data.";
+      reference
+         "RFC 6243; Section 3.";
+      type enumeration {
+         enum report-all {
+             description
+               "All default data is reported.";
+             reference
+               "RFC 6243; Section 3.1";
+         }
+         enum report-all-tagged {
+             description
+               "All default data is reported.
+                Any nodes considered to be default data
+                will contain a 'default' XML attribute,
+                set to 'true' or '1'.";
+             reference
+               "RFC 6243; Section 3.4";
+         }
+         enum trim {
+             description
+               "Values are not reported if they contain the default.";
+             reference
+               "RFC 6243; Section 3.2";
+         }
+         enum explicit {
+             description
+               "Report values that contain the definition of
+                explicitly set data.";
+             reference
+               "RFC 6243; Section 3.3";
+         }
+     }
+   }
+
+   grouping with-defaults-parameters {
+     description
+       "Contains the <with-defaults> parameter for control
+        of defaults in NETCONF retrieval operations.";
+
+     leaf with-defaults {
+       description
+         "The explicit defaults processing mode requested.";
+       reference
+         "RFC 6243; Section 4.5.1";
+
+       type with-defaults-mode;
+     }
+   }
+
+   // extending the get-config operation
+   augment /nc:get-config/nc:input {
+       description
+         "Adds the <with-defaults> parameter to the
+          input of the NETCONF <get-config> operation.";
+       reference
+         "RFC 6243; Section 4.5.1";
+
+       uses with-defaults-parameters;
+   }
+
+   // extending the get operation
+   augment /nc:get/nc:input {
+       description
+         "Adds the <with-defaults> parameter to
+          the input of the NETCONF <get> operation.";
+       reference
+         "RFC 6243; Section 4.5.1";
+
+       uses with-defaults-parameters;
+   }
+
+   // extending the copy-config operation
+   augment /nc:copy-config/nc:input {
+       description
+         "Adds the <with-defaults> parameter to
+          the input of the NETCONF <copy-config> operation.";
+       reference
+         "RFC 6243; Section 4.5.1";
+
+       uses with-defaults-parameters;
+   }
+
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf@2011-06-01.yang b/sdnr/model/yang/ietf-netconf@2011-06-01.yang
new file mode 100644
index 0000000..6449421
--- /dev/null
+++ b/sdnr/model/yang/ietf-netconf@2011-06-01.yang
@@ -0,0 +1,934 @@
+module ietf-netconf {
+
+  // the namespace for NETCONF XML definitions is unchanged
+  // from RFC 4741, which this document replaces
+  namespace "urn:ietf:params:xml:ns:netconf:base:1.0";
+
+  prefix nc;
+
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  import ietf-netconf-acm { prefix nacm; }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netconf/>
+     WG List:  <netconf@ietf.org>
+
+     WG Chair: Bert Wijnen
+               <bertietf@bwijnen.net>
+
+     WG Chair: Mehmet Ersue
+               <mehmet.ersue@nsn.com>
+
+     Editor:   Martin Bjorklund
+               <mbj@tail-f.com>
+
+     Editor:   Juergen Schoenwaelder
+               <j.schoenwaelder@jacobs-university.de>
+
+     Editor:   Andy Bierman
+               <andy.bierman@brocade.com>";
+  description
+    "NETCONF Protocol Data Types and Protocol Operations.
+
+     Copyright (c) 2011 IETF Trust and the persons identified as
+     the document authors.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 6241; see
+     the RFC itself for full legal notices.";
+
+  revision 2011-06-01 {
+    description
+      "Initial revision;
+       2013-09-29: Updated to include NACM attributes, 
+       as specified in RFC 6536: sec 3.2.5 and 3.2.8";
+    reference
+      "RFC 6241: Network Configuration Protocol";
+  }
+
+  extension get-filter-element-attributes {
+    description
+      "If this extension is present within an 'anyxml'
+       statement named 'filter', which must be conceptually
+       defined within the RPC input section for the <get>
+       and <get-config> protocol operations, then the
+       following unqualified XML attribute is supported
+       within the <filter> element, within a <get> or
+       <get-config> protocol operation:
+
+         type : optional attribute with allowed
+                value strings 'subtree' and 'xpath'.
+                If missing, the default value is 'subtree'.
+
+       If the 'xpath' feature is supported, then the
+       following unqualified XML attribute is
+       also supported:
+
+         select: optional attribute containing a
+                 string representing an XPath expression.
+                 The 'type' attribute must be equal to 'xpath'
+                 if this attribute is present.";
+  }
+
+  // NETCONF capabilities defined as features
+  feature writable-running {
+    description
+      "NETCONF :writable-running capability;
+       If the server advertises the :writable-running
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.2";
+  }
+
+  feature candidate {
+    description
+      "NETCONF :candidate capability;
+       If the server advertises the :candidate
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.3";
+  }
+
+  feature confirmed-commit {
+    if-feature candidate;
+    description
+      "NETCONF :confirmed-commit:1.1 capability;
+       If the server advertises the :confirmed-commit:1.1
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+
+    reference "RFC 6241, Section 8.4";
+  }
+
+  feature rollback-on-error {
+    description
+      "NETCONF :rollback-on-error capability;
+       If the server advertises the :rollback-on-error
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.5";
+  }
+
+  feature validate {
+    description
+      "NETCONF :validate:1.1 capability;
+       If the server advertises the :validate:1.1
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.6";
+  }
+
+  feature startup {
+    description
+      "NETCONF :startup capability;
+       If the server advertises the :startup
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.7";
+  }
+
+  feature url {
+    description
+      "NETCONF :url capability;
+       If the server advertises the :url
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.8";
+  }
+
+  feature xpath {
+    description
+      "NETCONF :xpath capability;
+       If the server advertises the :xpath
+       capability for a session, then this feature must
+       also be enabled for that session.  Otherwise,
+       this feature must not be enabled.";
+    reference "RFC 6241, Section 8.9";
+  }
+
+  // NETCONF Simple Types
+
+  typedef session-id-type {
+    type uint32 {
+      range "1..max";
+    }
+    description
+      "NETCONF Session Id";
+  }
+
+  typedef session-id-or-zero-type {
+    type uint32;
+    description
+      "NETCONF Session Id or Zero to indicate none";
+  }
+  typedef error-tag-type {
+    type enumeration {
+       enum in-use {
+         description
+           "The request requires a resource that
+            already is in use.";
+       }
+       enum invalid-value {
+         description
+           "The request specifies an unacceptable value for one
+            or more parameters.";
+       }
+       enum too-big {
+         description
+           "The request or response (that would be generated) is
+            too large for the implementation to handle.";
+       }
+       enum missing-attribute {
+         description
+           "An expected attribute is missing.";
+       }
+       enum bad-attribute {
+         description
+           "An attribute value is not correct; e.g., wrong type,
+            out of range, pattern mismatch.";
+       }
+       enum unknown-attribute {
+         description
+           "An unexpected attribute is present.";
+       }
+       enum missing-element {
+         description
+           "An expected element is missing.";
+       }
+       enum bad-element {
+         description
+           "An element value is not correct; e.g., wrong type,
+            out of range, pattern mismatch.";
+       }
+       enum unknown-element {
+         description
+           "An unexpected element is present.";
+       }
+       enum unknown-namespace {
+         description
+           "An unexpected namespace is present.";
+       }
+       enum access-denied {
+         description
+           "Access to the requested protocol operation or
+            data model is denied because authorization failed.";
+       }
+       enum lock-denied {
+         description
+           "Access to the requested lock is denied because the
+            lock is currently held by another entity.";
+       }
+       enum resource-denied {
+         description
+           "Request could not be completed because of
+            insufficient resources.";
+       }
+       enum rollback-failed {
+         description
+           "Request to roll back some configuration change (via
+            rollback-on-error or <discard-changes> operations)
+            was not completed for some reason.";
+
+       }
+       enum data-exists {
+         description
+           "Request could not be completed because the relevant
+            data model content already exists.  For example,
+            a 'create' operation was attempted on data that
+            already exists.";
+       }
+       enum data-missing {
+         description
+           "Request could not be completed because the relevant
+            data model content does not exist.  For example,
+            a 'delete' operation was attempted on
+            data that does not exist.";
+       }
+       enum operation-not-supported {
+         description
+           "Request could not be completed because the requested
+            operation is not supported by this implementation.";
+       }
+       enum operation-failed {
+         description
+           "Request could not be completed because the requested
+            operation failed for some reason not covered by
+            any other error condition.";
+       }
+       enum partial-operation {
+         description
+           "This error-tag is obsolete, and SHOULD NOT be sent
+            by servers conforming to this document.";
+       }
+       enum malformed-message {
+         description
+           "A message could not be handled because it failed to
+            be parsed correctly.  For example, the message is not
+            well-formed XML or it uses an invalid character set.";
+       }
+     }
+     description "NETCONF Error Tag";
+     reference "RFC 6241, Appendix A";
+  }
+
+  typedef error-severity-type {
+    type enumeration {
+      enum error {
+        description "Error severity";
+      }
+      enum warning {
+        description "Warning severity";
+      }
+    }
+    description "NETCONF Error Severity";
+    reference "RFC 6241, Section 4.3";
+  }
+
+  typedef edit-operation-type {
+    type enumeration {
+      enum merge {
+        description
+          "The configuration data identified by the
+           element containing this attribute is merged
+           with the configuration at the corresponding
+           level in the configuration datastore identified
+           by the target parameter.";
+      }
+      enum replace {
+        description
+          "The configuration data identified by the element
+           containing this attribute replaces any related
+           configuration in the configuration datastore
+           identified by the target parameter.  If no such
+           configuration data exists in the configuration
+           datastore, it is created.  Unlike a
+           <copy-config> operation, which replaces the
+           entire target configuration, only the configuration
+           actually present in the config parameter is affected.";
+      }
+      enum create {
+        description
+          "The configuration data identified by the element
+           containing this attribute is added to the
+           configuration if and only if the configuration
+           data does not already exist in the configuration
+           datastore.  If the configuration data exists, an
+           <rpc-error> element is returned with an
+           <error-tag> value of 'data-exists'.";
+      }
+      enum delete {
+        description
+          "The configuration data identified by the element
+           containing this attribute is deleted from the
+           configuration if and only if the configuration
+           data currently exists in the configuration
+           datastore.  If the configuration data does not
+           exist, an <rpc-error> element is returned with
+           an <error-tag> value of 'data-missing'.";
+      }
+      enum remove {
+        description
+          "The configuration data identified by the element
+           containing this attribute is deleted from the
+           configuration if the configuration
+           data currently exists in the configuration
+           datastore.  If the configuration data does not
+           exist, the 'remove' operation is silently ignored
+           by the server.";
+      }
+    }
+    default "merge";
+    description "NETCONF 'operation' attribute values";
+    reference "RFC 6241, Section 7.2";
+  }
+
+  // NETCONF Standard Protocol Operations
+
+  rpc get-config {
+    description
+      "Retrieve all or part of a specified configuration.";
+
+    reference "RFC 6241, Section 7.1";
+
+    input {
+      container source {
+        description
+          "Particular configuration to retrieve.";
+
+        choice config-source {
+          mandatory true;
+          description
+            "The configuration to retrieve.";
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config source.";
+          }
+          leaf running {
+            type empty;
+            description
+              "The running configuration is the config source.";
+          }
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config source.
+               This is optional-to-implement on the server because
+               not all servers will support filtering for this
+               datastore.";
+          }
+        }
+      }
+
+      anyxml filter {
+        description
+          "Subtree or XPath filter to use.";
+        nc:get-filter-element-attributes;
+      }
+    }
+
+    output {
+      anyxml data {
+        description
+          "Copy of the source datastore subset that matched
+           the filter criteria (if any).  An empty data container
+           indicates that the request did not produce any results.";
+      }
+    }
+  }
+
+  rpc edit-config {
+    description
+      "The <edit-config> operation loads all or part of a specified
+       configuration to the specified target configuration.";
+
+    reference "RFC 6241, Section 7.2";
+
+    input {
+      container target {
+        description
+          "Particular configuration to edit.";
+
+        choice config-target {
+          mandatory true;
+          description
+            "The configuration target.";
+
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config target.";
+          }
+          leaf running {
+            if-feature writable-running;
+            type empty;
+            description
+              "The running configuration is the config source.";
+          }
+        }
+      }
+
+      leaf default-operation {
+        type enumeration {
+          enum merge {
+            description
+              "The default operation is merge.";
+          }
+          enum replace {
+            description
+              "The default operation is replace.";
+          }
+          enum none {
+            description
+              "There is no default operation.";
+          }
+        }
+        default "merge";
+        description
+          "The default operation to use.";
+      }
+
+      leaf test-option {
+        if-feature validate;
+        type enumeration {
+          enum test-then-set {
+            description
+              "The server will test and then set if no errors.";
+          }
+          enum set {
+            description
+              "The server will set without a test first.";
+          }
+
+          enum test-only {
+            description
+              "The server will only test and not set, even
+               if there are no errors.";
+          }
+        }
+        default "test-then-set";
+        description
+          "The test option to use.";
+      }
+
+      leaf error-option {
+        type enumeration {
+          enum stop-on-error {
+            description
+              "The server will stop on errors.";
+          }
+          enum continue-on-error {
+            description
+              "The server may continue on errors.";
+          }
+          enum rollback-on-error {
+            description
+              "The server will roll back on errors.
+               This value can only be used if the 'rollback-on-error'
+               feature is supported.";
+          }
+        }
+        default "stop-on-error";
+        description
+          "The error option to use.";
+      }
+
+      choice edit-content {
+        mandatory true;
+        description
+          "The content for the edit operation.";
+
+        anyxml config {
+          description
+            "Inline Config content.";
+        }
+        leaf url {
+          if-feature url;
+          type inet:uri;
+          description
+            "URL-based config content.";
+        }
+      }
+    }
+  }
+
+  rpc copy-config {
+    description
+      "Create or replace an entire configuration datastore with the
+       contents of another complete configuration datastore.";
+
+    reference "RFC 6241, Section 7.3";
+
+    input {
+      container target {
+        description
+          "Particular configuration to copy to.";
+
+        choice config-target {
+          mandatory true;
+          description
+            "The configuration target of the copy operation.";
+
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config target.";
+          }
+          leaf running {
+            if-feature writable-running;
+            type empty;
+            description
+              "The running configuration is the config target.
+               This is optional-to-implement on the server.";
+          }
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config target.";
+          }
+          leaf url {
+            if-feature url;
+            type inet:uri;
+            description
+              "The URL-based configuration is the config target.";
+          }
+        }
+      }
+
+      container source {
+        description
+          "Particular configuration to copy from.";
+
+        choice config-source {
+          mandatory true;
+          description
+            "The configuration source for the copy operation.";
+
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config source.";
+          }
+          leaf running {
+            type empty;
+            description
+              "The running configuration is the config source.";
+          }
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config source.";
+          }
+          leaf url {
+            if-feature url;
+            type inet:uri;
+            description
+              "The URL-based configuration is the config source.";
+          }
+          anyxml config {
+            description
+              "Inline Config content: <config> element.  Represents
+               an entire configuration datastore, not
+               a subset of the running datastore.";
+          }
+        }
+      }
+    }
+  }
+
+  rpc delete-config {
+    nacm:default-deny-all;
+    description
+      "Delete a configuration datastore.";
+
+    reference "RFC 6241, Section 7.4";
+
+    input {
+      container target {
+        description
+          "Particular configuration to delete.";
+
+        choice config-target {
+          mandatory true;
+          description
+            "The configuration target to delete.";
+
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config target.";
+          }
+          leaf url {
+            if-feature url;
+            type inet:uri;
+            description
+              "The URL-based configuration is the config target.";
+          }
+        }
+      }
+    }
+  }
+
+  rpc lock {
+    description
+      "The lock operation allows the client to lock the configuration
+       system of a device.";
+
+    reference "RFC 6241, Section 7.5";
+
+    input {
+      container target {
+        description
+          "Particular configuration to lock.";
+
+        choice config-target {
+          mandatory true;
+          description
+            "The configuration target to lock.";
+
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config target.";
+          }
+          leaf running {
+            type empty;
+            description
+              "The running configuration is the config target.";
+          }
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config target.";
+          }
+        }
+      }
+    }
+  }
+
+  rpc unlock {
+    description
+      "The unlock operation is used to release a configuration lock,
+       previously obtained with the 'lock' operation.";
+
+    reference "RFC 6241, Section 7.6";
+
+    input {
+      container target {
+        description
+          "Particular configuration to unlock.";
+
+        choice config-target {
+          mandatory true;
+          description
+            "The configuration target to unlock.";
+
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config target.";
+          }
+          leaf running {
+            type empty;
+            description
+              "The running configuration is the config target.";
+          }
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config target.";
+          }
+        }
+      }
+    }
+  }
+
+  rpc get {
+    description
+      "Retrieve running configuration and device state information.";
+
+    reference "RFC 6241, Section 7.7";
+
+    input {
+      anyxml filter {
+        description
+          "This parameter specifies the portion of the system
+           configuration and state data to retrieve.";
+        nc:get-filter-element-attributes;
+      }
+    }
+
+    output {
+      anyxml data {
+        description
+          "Copy of the running datastore subset and/or state
+           data that matched the filter criteria (if any).
+           An empty data container indicates that the request did not
+           produce any results.";
+      }
+    }
+  }
+
+  rpc close-session {
+    description
+      "Request graceful termination of a NETCONF session.";
+
+    reference "RFC 6241, Section 7.8";
+  }
+
+  rpc kill-session {
+    nacm:default-deny-all;
+    description
+      "Force the termination of a NETCONF session.";
+
+    reference "RFC 6241, Section 7.9";
+
+    input {
+      leaf session-id {
+        type session-id-type;
+        mandatory true;
+        description
+          "Particular session to kill.";
+      }
+    }
+  }
+
+  rpc commit {
+    if-feature candidate;
+
+    description
+      "Commit the candidate configuration as the device's new
+       current configuration.";
+
+    reference "RFC 6241, Section 8.3.4.1";
+
+    input {
+      leaf confirmed {
+        if-feature confirmed-commit;
+        type empty;
+        description
+          "Requests a confirmed commit.";
+        reference "RFC 6241, Section 8.3.4.1";
+      }
+
+      leaf confirm-timeout {
+        if-feature confirmed-commit;
+        type uint32 {
+          range "1..max";
+        }
+        units "seconds";
+        default "600";   // 10 minutes
+        description
+          "The timeout interval for a confirmed commit.";
+        reference "RFC 6241, Section 8.3.4.1";
+      }
+
+      leaf persist {
+        if-feature confirmed-commit;
+        type string;
+        description
+          "This parameter is used to make a confirmed commit
+           persistent.  A persistent confirmed commit is not aborted
+           if the NETCONF session terminates.  The only way to abort
+           a persistent confirmed commit is to let the timer expire,
+           or to use the <cancel-commit> operation.
+
+           The value of this parameter is a token that must be given
+           in the 'persist-id' parameter of <commit> or
+           <cancel-commit> operations in order to confirm or cancel
+           the persistent confirmed commit.
+
+           The token should be a random string.";
+        reference "RFC 6241, Section 8.3.4.1";
+      }
+
+      leaf persist-id {
+        if-feature confirmed-commit;
+        type string;
+        description
+          "This parameter is given in order to commit a persistent
+           confirmed commit.  The value must be equal to the value
+           given in the 'persist' parameter to the <commit> operation.
+           If it does not match, the operation fails with an
+          'invalid-value' error.";
+        reference "RFC 6241, Section 8.3.4.1";
+      }
+
+    }
+  }
+
+  rpc discard-changes {
+    if-feature candidate;
+
+    description
+      "Revert the candidate configuration to the current
+       running configuration.";
+    reference "RFC 6241, Section 8.3.4.2";
+  }
+
+  rpc cancel-commit {
+    if-feature confirmed-commit;
+    description
+      "This operation is used to cancel an ongoing confirmed commit.
+       If the confirmed commit is persistent, the parameter
+       'persist-id' must be given, and it must match the value of the
+       'persist' parameter.";
+    reference "RFC 6241, Section 8.4.4.1";
+
+    input {
+      leaf persist-id {
+        type string;
+        description
+          "This parameter is given in order to cancel a persistent
+           confirmed commit.  The value must be equal to the value
+           given in the 'persist' parameter to the <commit> operation.
+           If it does not match, the operation fails with an
+          'invalid-value' error.";
+      }
+    }
+  }
+
+  rpc validate {
+    if-feature validate;
+
+    description
+      "Validates the contents of the specified configuration.";
+
+    reference "RFC 6241, Section 8.6.4.1";
+
+    input {
+      container source {
+        description
+          "Particular configuration to validate.";
+
+        choice config-source {
+          mandatory true;
+          description
+            "The configuration source to validate.";
+
+          leaf candidate {
+            if-feature candidate;
+            type empty;
+            description
+              "The candidate configuration is the config source.";
+          }
+          leaf running {
+            type empty;
+            description
+              "The running configuration is the config source.";
+          }
+          leaf startup {
+            if-feature startup;
+            type empty;
+            description
+              "The startup configuration is the config source.";
+          }
+          leaf url {
+            if-feature url;
+            type inet:uri;
+            description
+              "The URL-based configuration is the config source.";
+          }
+          anyxml config {
+            description
+              "Inline Config content: <config> element.  Represents
+               an entire configuration datastore, not
+               a subset of the running datastore.";
+          }
+        }
+      }
+    }
+  }
+
+}
diff --git a/sdnr/model/yang/ietf-ptp-dataset@2017-02-08.yang b/sdnr/model/yang/ietf-ptp-dataset@2017-02-08.yang
new file mode 100644
index 0000000..d899e56
--- /dev/null
+++ b/sdnr/model/yang/ietf-ptp-dataset@2017-02-08.yang
@@ -0,0 +1,605 @@
+   module ietf-ptp-dataset{
+     namespace "urn:ietf:params:xml:ns:yang:ietf-ptp-dataset";
+     prefix "ptp-dataset";
+     organization "IETF TICTOC Working Group";
+     contact
+         "WG Web:   http://tools.ietf.org/wg/tictoc/
+          WG List:  <mailto:tictoc@ietf.org>
+          WG Chair: Karen O'Donoghue
+                    <mailto:odonoghue@isoc.org>
+          WG Chair: Yaakov Stein
+                    <mailto: Yaakov_s@rad.com>
+          Editor:   Yuanlong Jiang
+                    <mailto:jiangyuanlong@huawei.com>
+          Editor:   Rodney Cummings
+                    <mailto:rodney.cummings@ni.com>";
+     description
+       "This YANG module defines a data model for the configuration
+       of IEEE 1588-2008 clocks, and also for retrieval of the state
+       data of IEEE 1588-2008 clocks.";
+
+     revision "2017-02-08" {
+       description "Version 4.0";
+       reference "draft-ietf-tictoc-1588v2-yang";
+      }
+
+     typedef delay-mechanism-enumeration {
+       type enumeration {
+         enum E2E {
+           value 1;
+           description
+             "The port uses the delay request-response
+              mechanism.";
+         }
+         enum P2P {
+           value 2;
+           description
+             "The port uses the peer delay mechanism.";
+         }
+         enum DISABLED {
+           value 254;
+           description
+             "The port does not implement any delay
+              mechanism.";
+         }
+       }
+       description
+         "The propagation delay measuring option used by the
+         port. Values for this enumeration are specified
+         by the IEEE 1588 standard exclusively.";
+       reference
+         "IEEE Std 1588-2008: 8.2.5.4.4";
+     }
+
+     typedef port-state-enumeration {
+       type enumeration {
+         enum INITIALIZING {
+           value 1;
+           description
+             "The port is initializing its data sets, hardware, and
+             communication facilities.";
+         }
+         enum FAULTY {
+           value 2;
+           description
+             "The port is in the fault state.";
+         }
+         enum DISABLED {
+           value 3;
+           description
+             "The port is disabled, and is not communicating PTP
+             messages (other than possibly PTP management
+             messages).";
+         }
+         enum LISTENING {
+           value 4;
+           description
+             "The port is listening for an Announce message.";
+         }
+         enum PRE_MASTER {
+           value 5;
+           description
+             "The port is in the pre-master state.";
+         }
+         enum MASTER {
+           value 6;
+           description
+             "The port is behaving as a master port.";
+         }
+         enum PASSIVE {
+           value 7;
+           description
+             "The port is in the passive state.";
+         }
+         enum UNCALIBRATED {
+           value 8;
+           description
+             "A master port has been selected, but the port is still
+             in the uncalibrated state.";
+         }
+         enum SLAVE {
+           value 9;
+           description
+             "The port is synchronizing to the selected
+             master port.";
+         }
+       }
+       description
+         "The current state of the protocol engine associated
+         with the port.  Values for this enumeration are specified
+         by the IEEE 1588 standard exclusively.";
+       reference
+         "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
+     }
+
+     typedef time-interval-type {
+       type int64;
+       description
+         "Derived data type for time interval,
+         represented in units of nanoseconds and
+         multipled by 2^16";
+       reference
+         "IEEE Std 1588-2008: 5.3.2";
+     }
+
+     typedef clock-identity-type {
+       type binary {
+         length "8";
+       }
+       description
+         "Derived data type to identify a clock";
+       reference
+         "IEEE Std 1588-2008: 5.3.4";
+     }
+
+     grouping port-identity-grouping {
+       description
+         "Derived data type to identify a port, which contains
+         two members: clockIdentity and portNumber.";
+       reference
+         "IEEE Std 1588-2008: 5.3.5";
+
+       leaf clock-identity {
+         type clock-identity-type;
+         description
+           "Identity of the clock";
+       }
+
+       leaf port-number {
+         type uint16;
+         description
+           "Port number";
+       }
+     }
+
+     grouping clock-quality-grouping {
+       description
+         "Derived data type for quality of a clock, which contains
+         clockClass, clockAccuracy and offsetScaledLogVariance.";
+       reference
+         "IEEE Std 1588-2008: 5.3.7";
+
+       leaf clock-class {
+         type uint8;
+         default 248;
+         description
+           "The clockClass denotes the traceability of the time
+           or frequency distributed by the clock.";
+       }
+
+       leaf clock-accuracy {
+         type uint8;
+         description
+           "The clockAccuracy indicates the expected accuracy
+            of the clock.";
+       }
+
+       leaf offset-scaled-log-variance {
+         type uint16;
+         description
+           "The offsetScaledLogVariance provides an
+           estimate of the variations of the clock
+           from a linear timescale when it is not synchronized
+           to another clock using the protocol.";
+       }
+     }
+
+     grouping default-ds-entry {
+       description
+         "Collection of members of the default data set.";
+
+       leaf two-step-flag {
+         type boolean;
+         description
+               "When set, the clock is a two-step clock; otherwise,
+               the clock is a one-step clock.";
+       }
+
+       leaf clock-identity {
+         type clock-identity-type;
+         description
+           "The clockIdentity of the local clock";
+       }
+
+       leaf number-ports {
+         type uint16;
+         description
+           "The number of PTP ports on the device.";
+       }
+
+       container clock-quality {
+         description
+           "The clockQuality of the local clock.";
+
+         uses clock-quality-grouping;
+       }
+
+       leaf priority1 {
+         type uint8;
+         description
+           "The priority1 attribute of the local clock.";
+       }
+
+       leaf priority2{
+         type uint8;
+         description
+           "The priority2 attribute of the local clock. ";
+       }
+
+       leaf domain-number {
+         type uint8;
+         description
+                "The domain number of the current syntonization
+               domain.";
+       }
+
+       leaf slave-only {
+         type boolean;
+         description
+           "When set, the clock is a slave-only clock.";
+       }
+     }
+
+     grouping current-ds-entry {
+       description
+         "Collection of members of current data set.";
+
+       leaf steps-removed {
+         type uint16;
+         default 0;
+         description
+           "The number of communication paths traversed
+           between the local clock and the grandmaster clock.";
+       }
+       leaf offset-from-master {
+         type time-interval-type;
+         description
+           "The current value of the time difference between
+           a master and a slave clock as computed by the slave.";
+       }
+
+       leaf mean-path-delay {
+         type time-interval-type;
+         description
+           "The current value of the mean propagation time between
+           a master and a slave clock as computed by the slave.";
+
+       }
+     }
+
+     grouping parent-ds-entry {
+       description
+         "Collection of members of the parent data set.";
+
+       container parent-port-identity {
+         description
+           "The portIdentity of the port on the master";
+         uses port-identity-grouping;
+       }
+       leaf parent-stats {
+         type boolean;
+         default false;
+         description
+           "When set, the values of
+            observedParentOffsetScaledLogVariance and
+            observedParentClockPhaseChangeRate of parentDS
+            have been measured and are valid.";
+       }
+       leaf observed-parent-offset-scaled-log-variance {
+         type uint16;
+         default 0xFFFF;
+         description
+           "An estimate of the parent clock's PTP variance
+            as observed by the slave clock.";
+       }
+       leaf observed-parent-clock-phase-change-rate {
+         type int32;
+         description
+           "An estimate of the parent clock's phase change rate
+            as observed by the slave clock.";
+       }
+       leaf grandmaster-identity {
+         type binary{
+           length "8";
+         }
+
+         description
+          "The clockIdentity attribute of the grandmaster clock.";
+
+       }
+       container grandmaster-clock-quality {
+         description
+           "The clockQuality of the grandmaster clock.";
+         uses clock-quality-grouping;
+       }
+       leaf grandmaster-priority1 {
+         type uint8;
+         description
+           "The priority1 attribute of the grandmaster clock.";
+       }
+       leaf grandmaster-priority2 {
+         type uint8;
+         description
+           "The priority2 attribute of the grandmaster clock.";
+       }
+     }
+
+     grouping time-properties-ds-entry {
+       description
+         "Collection of members of the timeProperties data set.";
+       leaf current-utc-offset-valid {
+         type boolean;
+         description
+           "When set, the current UTC offset is valid.";
+       }
+       leaf current-utc-offset {
+         type int16;
+         description
+           "The offset between TAI and UTC when the epoch of the
+            PTP system is the PTP epoch, i.e., when ptp-timescale
+            is TRUE; otherwise, the value has no meaning.";
+       }
+       leaf leap59 {
+         type boolean;
+         description
+               "When set, the last minute of the current UTC day
+               contains 59 seconds.";
+       }
+       leaf leap61 {
+         type boolean;
+         description
+               "When set, the last minute of the current UTC day
+               contains 61 seconds.";
+       }
+       leaf time-traceable {
+         type boolean;
+         description
+           "When set, the timescale and the currentUtcOffset are
+               traceable to a primary reference.";
+       }
+       leaf frequency-traceable {
+         type boolean;
+         description
+           "When set, the frequency determining the timescale
+            is traceable to a primary reference.";
+       }
+       leaf ptp-timescale {
+         type boolean;
+         description
+           "When set, the clock timescale of the grandmaster
+                clock is PTP; otherwise, the timescale is ARB
+               (arbitrary).";
+       }
+       leaf time-source {
+         type uint8;
+         description
+           "The source of time used by the grandmaster clock.";
+
+       }
+     }
+
+     grouping port-ds-entry {
+       description
+         "Collection of members of the port data set.";
+
+       container port-identity {
+         description
+           "The portIdentity attribute of the local port.";
+         uses port-identity-grouping;
+       }
+
+       leaf port-state {
+         type port-state-enumeration;
+         default "INITIALIZING";
+         description
+           "Current state associated with the port.";
+       }
+
+       leaf log-min-delay-req-interval {
+         type int8;
+         description
+           "The base-two logarithm of the minDelayReqInterval
+            (the minimum permitted mean time interval between
+            successive Delay_Req messages).";
+       }
+
+       leaf peer-mean-path-delay {
+         type time-interval-type;
+         default 0;
+         description
+           "An estimate of the current one-way propagation delay
+            on the link when the delayMechanism is P2P; otherwise,
+            it is zero.";
+       }
+
+       leaf log-announce-interval {
+         type int8;
+         description
+           "The base-two logarithm of the mean
+            announceInterval (mean time interval between
+            successive Announce messages).";
+       }
+
+       leaf announce-receipt-timeout {
+         type uint8;
+         description
+           "The number of announceInterval that have to pass
+            without receipt of an Announce message before the
+            occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
+            EXPIRES.";
+       }
+
+       leaf log-sync-interval {
+         type int8;
+         description
+           "The base-two logarithm of the mean SyncInterval
+            for multicast messages.  The rates for unicast
+            transmissions are negotiated separately on a per port
+            basis and are not constrained by this attribute.";
+       }
+
+       leaf delay-mechanism {
+         type delay-mechanism-enumeration;
+         description
+           "The propagation delay measuring option used by the
+            port in computing meanPathDelay.";
+       }
+
+       leaf log-min-pdelay-req-interval {
+         type int8;
+         description
+           "The base-two logarithm of the
+            minPdelayReqInterval (minimum permitted mean time
+            interval between successive Pdelay_Req messages).";
+
+       }
+
+       leaf version-number {
+         type uint8;
+         description
+           "The PTP version in use on the port.";
+       }
+     }
+
+     grouping transparent-clock-default-ds-entry {
+       description
+         "Collection of members of the transparentClockDefault data
+           set (default data set for a transparent clock).";
+
+       leaf clock-identity {
+         type clock-identity-type;
+         description
+           "The clockIdentity of the transparent clock.";
+       }
+       leaf number-ports {
+         type uint16;
+         description
+           "The number of PTP ports on the device.";
+       }
+       leaf delay-mechanism {
+         type delay-mechanism-enumeration;
+         description
+           "The propagation delay measuring option
+            used by the transparent clock.";
+       }
+       leaf primary-domain {
+         type uint8;
+         default 0;
+         description
+          "The domainNumber of the primary syntonization domain.";
+
+       }
+     }
+
+     grouping transparent-clock-port-ds-entry {
+       description
+         "Collection of members of the transparentClockPort data
+          set (port data set for a transparent clock).";
+
+       container port-identity {
+         description
+           "The portIdentity of the local port.";
+
+         uses port-identity-grouping;
+       }
+       leaf log-min-pdelay-req-interval {
+         type int8;
+         description
+           "The logarithm to the base 2 of the
+            minPdelayReqInterval (minimum permitted mean time
+            interval between successive Pdelay_Req messages).";
+       }
+       leaf faulty-flag {
+         type boolean;
+         default false;
+         description
+           "When set, the port is faulty.";
+       }
+       leaf peer-mean-path-delay {
+         type time-interval-type;
+         default 0;
+         description
+           "An estimate of the current one-way propagation delay
+            on the link when the delayMechanism is P2P; otherwise,
+            it is zero.";
+       }
+     }
+
+     list instance-list {
+
+       key "instance-number";
+
+       description
+         "List of one or more PTP datasets in the device, one for
+         each domain (see IEEE 1588-2008 subclause 6.3).
+         Each PTP dataset represents a distinct instance of
+         PTP implementation in the device (i.e. distinct
+         Ordinary Clock or Boundary Clock).";
+
+       leaf instance-number {
+         type uint16;
+         description
+           "The instance number of the current PTP instance";
+       }
+        container default-ds {
+          description
+            "The default data set of the clock.";
+          uses default-ds-entry;
+        }
+
+        container current-ds {
+          description
+            "The current data set of the clock.";
+          uses current-ds-entry;
+        }
+
+        container parent-ds {
+          description
+            "The parent data set of the clock.";
+          uses parent-ds-entry;
+        }
+
+        container time-properties-ds {
+          description
+            "The timeProperties data set of the clock.";
+          uses time-properties-ds-entry;
+        }
+
+        list port-ds-list {
+          key "port-number";
+          description
+            "List of port data sets of the clock.";
+          leaf port-number{
+            type leafref{
+              path "../port-identity/port-number";
+            }
+            description
+              "Refers to the portNumber memer of
+              portDS.portIdentity.";
+          }
+          uses port-ds-entry;
+        }
+     }
+
+     container transparent-clock-default-ds {
+       description
+         "The members of the transparentClockDefault Data Set";
+       uses transparent-clock-default-ds-entry;
+     }
+
+     list transparent-clock-port-ds-list {
+       key "port-number";
+       description
+         "List of transparentClockPort data sets
+          of the transparent clock.";
+       leaf port-number {
+         type leafref {
+           path "../port-identity/port-number";
+         }
+          description
+            "Refers to the portNumber memer
+             of transparentClockPortDS.portIdentity.";
+        }
+        uses transparent-clock-port-ds-entry;
+      }
+   }
diff --git a/sdnr/model/yang/ietf-restconf@2013-10-19.yang b/sdnr/model/yang/ietf-restconf@2013-10-19.yang
new file mode 100644
index 0000000..83bb378
--- /dev/null
+++ b/sdnr/model/yang/ietf-restconf@2013-10-19.yang
@@ -0,0 +1,689 @@
+module ietf-restconf {
+  namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
+  prefix "restconf";
+
+  import ietf-yang-types { prefix yang; revision-date 2013-07-15; }
+  import ietf-inet-types { prefix inet; }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+
+  contact
+    "Editor:   Andy Bierman
+               <mailto:andy@yumaworks.com>
+
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>
+
+     Editor:   Kent Watsen
+               <mailto:kwatsen@juniper.net>
+
+     Editor:   Rex Fernando
+               <mailto:rex@cisco.com>";
+
+  description
+    "This module contains conceptual YANG specifications
+     for the YANG Patch and error content that is used in
+     RESTCONF protocol messages. A conceptual container
+     representing the RESTCONF API nodes (media type 
+     application/yang.api).
+
+     Note that the YANG definitions within this module do not
+     represent configuration data of any kind.
+     The YANG grouping statements provide a normative syntax
+     for XML and JSON message encoding purposes.
+
+     Copyright (c) 2013 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC XXXX; see
+     the RFC itself for full legal notices.";
+
+  // RFC Ed.: replace XXXX with actual RFC number and remove this
+  // note.
+
+  // RFC Ed.: remove this note
+  // Note: extracted from draft-bierman-netconf-restconf-02.txt
+
+  // RFC Ed.: update the date below with the date of RFC publication
+  // and remove this note.
+  revision 2013-10-19 {
+    description
+      "Initial revision.";
+    reference
+      "RFC XXXX: RESTCONF Protocol.";
+  }
+
+  typedef data-resource-identifier {
+    type string {
+      length "1 .. max";
+    }
+    description
+      "Contains a Data Resource Identifier formatted string
+       to identify a specific data node. The data node that
+       uses this data type SHOULD define the document root
+       for data resource identifiers.  The default document
+       root is the target datastore conceptual root node.
+       Data resource identifiers are defined relative to
+       this document root.";
+    reference
+      "RFC XXXX: [sec. 5.3.1.1 ABNF For Data Resource Identifiers]";
+  }
+
+  // this typedef is TBD; not currently used
+  typedef datastore-identifier {
+    type union {
+      type enumeration {
+        enum candidate {
+          description
+            "Identifies the NETCONF shared candidate datastore.";
+          reference
+            "RFC 6241, section 8.3";
+        }
+        enum running {
+          description
+            "Identifies the NETCONF running datastore.";
+          reference
+            "RFC 6241, section 5.1";
+        }
+        enum startup {
+          description
+            "Identifies the NETCONF startup datastore.";
+          reference
+            "RFC 6241, section 8.7";
+        }
+      }
+      type string;
+    }
+    description
+      "Contains a string to identify a specific datastore.
+       The enumerated datastore identifier values are
+       reserved for standard datastore names.";
+  }
+
+  typedef revision-identifier {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}';
+    }
+    description
+      "Represents a specific date in YYYY-MM-DD format.
+       TBD: make pattern more precise to exclude leading zeros.";
+  }
+
+  grouping yang-patch {
+
+    description
+      "A grouping that contains a YANG container
+       representing the syntax and semantics of a
+       YANG Patch edit request message.";
+
+    container yang-patch {
+      description
+        "Represents a conceptual sequence of datastore edits,
+         called a patch. Each patch is given a client-assigned
+         patch identifier. Each edit MUST be applied
+         in ascending order, and all edits MUST be applied.
+         If any errors occur, then the target datastore MUST NOT
+         be changed by the patch operation.
+  
+         A patch MUST be validated by the server to be a 
+         well-formed message before any of the patch edits
+         are validated or attempted.
+  
+         YANG datastore validation (defined in RFC 6020, section
+         8.3.3) is performed after all edits have been
+         individually validated.
+  
+         It is possible for a datastore constraint violation to occur
+         due to any node in the datastore, including nodes not
+         included in the edit list. Any validation errors MUST
+         be reported in the reply message.";
+  
+      reference
+        "RFC 6020, section 8.3.";
+  
+      leaf patch-id {
+        type string;
+        description
+          "An arbitrary string provided by the client to identify
+           the entire patch.  This value SHOULD be present in any
+           audit logging records generated by the server for the
+           patch. Error messages returned by the server pertaining
+           to this patch will be identified by this patch-id value.";
+      }
+
+      leaf comment {
+        type string {
+          length "0 .. 1024";
+        }
+        description
+          "An arbitrary string provided by the client to describe
+           the entire patch.  This value SHOULD be present in any
+           audit logging records generated by the server for the
+           patch.";
+      }
+  
+      list edit {
+        key edit-id;
+        ordered-by user;
+
+        description
+          "Represents one edit within the YANG Patch
+           request message.";
+
+        leaf edit-id {
+          type string;
+          description
+            "Arbitrary string index for the edit.
+             Error messages returned by the server pertaining
+             to a specific edit will be identified by this
+             value.";
+        }
+  
+        leaf operation {
+          type enumeration {
+            enum create {
+              description
+                "The target data node is created using the
+                 supplied value, only if it does not already
+                 exist.";
+            }
+            enum delete {
+              description
+                "Delete the target node, only if the data resource
+                 currently exists, otherwise return an error.";
+            }
+            enum insert {
+              description
+                "Insert the supplied value into a user-ordered
+                 list or leaf-list entry. The target node must
+                 represent a new data resource.";
+            }
+            enum merge {
+              description
+                "The supplied value is merged with the target data
+                 node.";
+            }
+            enum move {
+              description
+                "Move the target node. Reorder a user-ordered
+                 list or leaf-list. The target node must represent
+                 an existing data resource.";
+            }
+            enum replace {
+              description
+                "The supplied value is used to replace the target
+                 data node.";
+            }
+            enum remove {
+              description
+                "Delete the target node if it currently exists.";
+            }
+          }
+          mandatory true;
+          description
+            "The datastore operation requested for the associated
+             edit entry";
+        }
+  
+        leaf target {
+          type data-resource-identifier;
+          mandatory true;
+          description
+            "Identifies the target data resource for the edit
+             operation.";
+        }
+  
+        leaf point {
+          when "(../operation = 'insert' or " +
+            "../operation = 'move') and " +
+            "(../where = 'before' or ../where = 'after')" {
+            description
+              "Point leaf only applies for insert or move
+               operations, before or after an existing entry.";
+          }
+          type data-resource-identifier;
+          description
+            "The absolute URL path for the data node that is being
+             used as the insertion point or move point for the
+             target of this edit entry.";
+        }
+  
+        leaf where {
+          when "../operation = 'insert' or ../operation = 'move'" {
+            description
+              "Where leaf only applies for insert or move
+               operations.";
+          }
+          type enumeration {
+            enum before {
+              description
+                "Insert or move a data node before the data resource
+                 identified by the 'point' parameter.";
+            }
+            enum after {
+              description
+                "Insert or move a data node after the data resource
+                 identified by the 'point' parameter.";
+            }
+            enum first {
+              description
+                "Insert or move a data node so it becomes ordered
+                 as the first entry.";
+            }
+            enum last {
+              description
+                "Insert or move a data node so it becomes ordered
+                 as the last entry.";
+            }
+  
+          }
+          default last;
+          description
+            "Identifies where a data resource will be inserted or
+             moved. YANG only allows these operations for
+             list and leaf-list data nodes that are ordered-by
+             user.";
+        }
+  
+        anyxml value {
+          when "(../operation = 'create' or " +
+            "../operation = 'merge' " +
+            "or ../operation = 'replace' or " +
+            "../operation = 'insert')" {
+            description
+              "Value node only used for create, merge,
+               replace, and insert operations";
+          }
+          description
+            "Value used for this edit operation.";
+        }
+      }
+    }
+
+  } // grouping yang-patch
+
+
+  grouping yang-patch-status {
+
+    description
+      "A grouping that contains a YANG container
+       representing the syntax and semantics of
+       YANG Patch status response message.";
+    
+    container yang-patch-status {
+      description
+        "A container representing the response message
+         sent by the server after a YANG Patch edit
+         request message has been processed.";
+
+      leaf patch-id {
+        type string;
+        description
+          "The patch-id value used in the request";
+      }
+
+      choice global-status {
+        description
+          "Report global errors or complete success.
+           If there is no case selected then errors
+           are reported in the edit-status container.";
+
+        case global-errors {
+          uses errors;
+          description
+            "This container will be present if global
+             errors unrelated to a specific edit occurred.";
+        }
+        leaf ok {
+          type empty;
+          description
+            "This leaf will be present if the request succeeded
+             and there are no errors reported in the edit-status
+             container.";
+        }
+      }
+
+      container edit-status {
+        description
+          "This container will be present if there are
+           edit-specific status responses to report.";
+      
+        list edit {
+          key edit-id;
+
+          description
+            "Represents a list of status responses,
+             corresponding to edits in the YANG Patch
+             request message.  If an edit entry was
+             skipped or not reached by the server,
+             then this list will not contain a corresponding
+             entry for that edit.";
+
+          leaf edit-id {
+            type string;
+             description
+               "Response status is for the edit list entry
+                with this edit-id value.";
+          }
+          choice edit-status-choice {
+            description
+              "A choice between different types of status
+               responses for each edit entry.";
+            leaf ok {
+              type empty;
+              description
+                "This edit entry was invoked without any
+                 errors detected by the server associated
+                 with this edit.";
+            }
+            leaf location {
+              type inet:uri;
+              description
+                "Contains the Location header value that would be
+                 returned if this edit causes a new resource to be
+                 created. If the edit identified by the same edit-id
+                 value was successfully invoked and a new resource
+                 was created, then this field will be returned
+                 instead of 'ok'.";
+            }
+            case errors {
+              uses errors;
+              description
+                "The server detected errors associated with the
+                  edit identified by the same edit-id value.";
+            }
+          }
+        }
+      }
+    }
+  }  // grouping yang-patch-status
+
+
+  grouping errors {
+
+    description
+      "A grouping that contains a YANG container
+       representing the syntax and semantics of a
+       YANG Patch errors report within a response message.";
+
+    container errors {
+      config false;  // needed so list error does not need a key
+      description
+        "Represents an error report returned by the server if
+         a request results in an error.";
+  
+      list error {
+        description
+          "An entry containing information about one
+           specific error that occurred while processing
+           a RESTCONF request.";
+        reference "RFC 6241, Section 4.3";
+  
+        leaf error-type { 
+          type enumeration {
+            enum transport {
+              description "The transport layer";
+            }
+            enum rpc {
+              description "The rpc or notification layer";
+            }
+            enum protocol {
+              description "The protocol operation layer";
+            }
+            enum application {
+              description "The server application layer";
+            }
+          }
+          mandatory true;
+          description
+            "The protocol layer where the error occurred.";
+        }
+  
+        leaf error-tag {
+          type string;
+          mandatory true;
+          description
+            "The enumerated error tag.";
+        }
+  
+        leaf error-app-tag { 
+          type string;
+          description
+            "The application-specific error tag.";
+        }
+  
+        leaf error-path { 
+          type data-resource-identifier;
+          description
+            "The target data resource identifier associated
+             with the error, if any.";
+        }
+  
+        leaf error-message { 
+          type string;
+          description
+            "A message describing the error.";
+        }
+  
+        container error-info { 
+           description
+             "A container allowing additional information
+              to be included in the error report.";
+           // arbitrary anyxml content here
+        }
+      }
+    }
+  } // grouping errors
+
+
+  grouping restconf {
+
+    description
+      "A grouping that contains a YANG container
+       representing the syntax and semantics of
+       the RESTCONF API resource.";
+
+    container restconf {
+      description
+        "Conceptual container representing the
+         application/yang.api resource type.";
+  
+      container config {
+        description
+          "Container representing the application/yang.datastore
+           resource type. Represents the conceptual root of the
+           unified configuration datastore containing YANG data
+           nodes. The child nodes of this container are
+           configuration data resources (application/yang.data)
+           defined as top-level YANG data nodes from the modules
+           advertised by the server in /restconf/modules.";
+      }
+
+      container operational {
+        description
+          "Container representing the application/yang.datastore
+           resource type. Represents the conceptual root of the
+           operational data supported by the server.  The child
+           nodes of this container are operational data resources 
+           (application/yang.data) defined as top-level
+           YANG data nodes from the modules advertised by
+           the server in /restconf/modules.";
+      }
+
+      container modules {
+        description
+          "Contains a list of module description entries.
+           These modules are currently loaded into the server.";
+  
+        list module {
+          key "name revision";
+          description
+            "Each entry represents one module currently
+             supported by the server.";
+
+          leaf name {
+            type yang:yang-identifier;
+            description "The YANG module name.";
+          }
+          leaf revision {
+            type union {
+              type revision-identifier;
+              type string { length 0; }
+            }
+            description
+              "The YANG module revision date. An empty string is
+               used if no revision statement is present in the
+               YANG module.";
+          }
+          leaf namespace {
+            type inet:uri;
+            mandatory true;
+            description
+              "The XML namespace identifier for this module.";
+          }
+          leaf-list feature {
+            type yang:yang-identifier;
+            description
+              "List of YANG feature names from this module that are
+               supported by the server.";
+          }
+          leaf-list deviation {
+            type yang:yang-identifier;
+            description
+              "List of YANG deviation module names used by this
+               server to modify the conformance of the module
+               associated with this entry.";
+          }
+        }
+      }
+
+      container operations {
+        description
+          "Container for all operation resources
+           (application/yang.operation),
+
+           Each resource is represented as an empty leaf with the
+           name of the RPC operation from the YANG rpc statement.
+  
+           E.g.;
+  
+              POST /restconf/operations/show-log-errors
+  
+              leaf show-log-errors {
+                type empty;
+              }
+          ";
+      }
+
+      container streams {
+        description
+          "Container representing the notification event streams
+           supported by the server.";
+         reference
+           "RFC 5277, Section 3.4, <streams> element.";
+
+        list stream {
+          key name;
+          description
+            "Each entry describes an event stream supported by
+             the server.";
+
+          leaf name {
+            type string;
+            description "The stream name";
+            reference "RFC 5277, Section 3.4, <name> element.";
+          }
+
+          leaf description {
+            type string;
+            description "Description of stream content";
+            reference
+              "RFC 5277, Section 3.4, <description> element.";
+          }
+
+          leaf replay-support {
+            type boolean;
+            description
+              "Indicates if replay buffer supported for this stream";
+            reference
+              "RFC 5277, Section 3.4, <replaySupport> element.";
+          }
+
+          leaf replay-log-creation-time {
+            type yang:date-and-time;
+            description
+              "Indicates the time the replay log for this stream
+               was created.";
+            reference
+              "RFC 5277, Section 3.4, <replayLogCreationTime>
+               element.";
+          }
+
+          leaf events {
+            type empty;
+            description
+              "Represents the entry point for establishing
+               notification delivery via server sent events.";
+          }
+        }
+      }
+
+      leaf version {
+        type enumeration {
+          enum "1.0" {
+            description 
+              "Version 1.0 of the RESTCONF protocol.";
+          }
+        }
+        config false;
+        description
+          "Contains the RESTCONF protocol version.";
+      }
+    }
+  }  // grouping restconf
+
+
+  grouping notification {
+    description
+      "Contains the notification message wrapper definition.";
+
+    container notification {
+      description
+        "RESTCONF notification message wrapper.";
+
+      leaf event-time {
+        type yang:date-and-time;
+        mandatory true;
+        description
+          "The time the event was generated by the
+           event source.";
+        reference
+          "RFC 5277, section 4, <eventTime> element.";
+      }
+
+      /* The YANG-specific notification container is encoded
+       * after the 'event-time' element.  The format
+       * corresponds to the notificationContent element
+       * in RFC 5277, section 4. For example:
+       *
+       *  module example-one {
+       *     ...
+       *     notification event1 { ... }
+       *
+       *  }
+       *
+       *  Encoded as element 'event1' in the namespace
+       *  for module 'example-one'.
+       */
+    }
+  }  // grouping notification
+
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-system@2014-08-06.yang b/sdnr/model/yang/ietf-system@2014-08-06.yang
new file mode 100644
index 0000000..de3096c
--- /dev/null
+++ b/sdnr/model/yang/ietf-system@2014-08-06.yang
@@ -0,0 +1,842 @@
+module ietf-system {
+  namespace "urn:ietf:params:xml:ns:yang:ietf-system";
+  prefix "sys";
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  import ietf-netconf-acm {
+    prefix nacm;
+  }
+
+  import iana-crypt-hash {
+    prefix ianach;
+  }
+
+  organization
+    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+
+
+
+
+
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netmod/>
+     WG List:  <mailto:netmod@ietf.org>
+
+     WG Chair: Thomas Nadeau
+               <mailto:tnadeau@lucidvision.com>
+
+     WG Chair: Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>
+
+     Editor:   Andy Bierman
+               <mailto:andy@yumaworks.com>
+
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>";
+
+  description
+    "This module contains a collection of YANG definitions for the
+     configuration and identification of some common system
+     properties within a device containing a NETCONF server.  This
+     includes data node definitions for system identification,
+     time-of-day management, user management, DNS resolver
+     configuration, and some protocol operations for system
+     management.
+
+     Copyright (c) 2014 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 7317; see
+     the RFC itself for full legal notices.";
+
+  revision 2014-08-06 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7317: A YANG Data Model for System Management";
+  }
+
+
+
+
+ /*
+  * Typedefs
+  */
+
+  typedef timezone-name {
+    type string;
+    description
+      "A time zone name as used by the Time Zone Database,
+       sometimes referred to as the 'Olson Database'.
+
+       The exact set of valid values is an implementation-specific
+       matter.  Client discovery of the exact set of time zone names
+       for a particular server is out of scope.";
+    reference
+      "RFC 6557: Procedures for Maintaining the Time Zone Database";
+   }
+
+  /*
+   * Features
+   */
+
+  feature radius {
+    description
+      "Indicates that the device can be configured as a RADIUS
+       client.";
+    reference
+      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
+  }
+
+  feature authentication {
+    description
+      "Indicates that the device supports configuration of
+       user authentication.";
+  }
+
+  feature local-users {
+    if-feature authentication;
+    description
+      "Indicates that the device supports configuration of
+       local user authentication.";
+  }
+
+
+
+
+
+
+
+  feature radius-authentication {
+    if-feature radius;
+    if-feature authentication;
+    description
+      "Indicates that the device supports configuration of user
+       authentication over RADIUS.";
+    reference
+      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
+       RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
+                 Authorization for Network Access Server (NAS)
+                 Management";
+  }
+
+  feature ntp {
+    description
+      "Indicates that the device can be configured to use one or
+       more NTP servers to set the system date and time.";
+  }
+
+  feature ntp-udp-port {
+    if-feature ntp;
+    description
+      "Indicates that the device supports the configuration of
+       the UDP port for NTP servers.
+
+       This is a 'feature', since many implementations do not support
+       any port other than the default port.";
+  }
+
+  feature timezone-name {
+    description
+      "Indicates that the local time zone on the device
+       can be configured to use the TZ database
+       to set the time zone and manage daylight saving time.";
+    reference
+      "RFC 6557: Procedures for Maintaining the Time Zone Database";
+  }
+
+  feature dns-udp-tcp-port {
+    description
+      "Indicates that the device supports the configuration of
+       the UDP and TCP port for DNS servers.
+
+       This is a 'feature', since many implementations do not support
+       any port other than the default port.";
+  }
+
+
+  /*
+   * Identities
+   */
+
+  identity authentication-method {
+    description
+      "Base identity for user authentication methods.";
+  }
+
+  identity radius {
+    base authentication-method;
+    description
+      "Indicates user authentication using RADIUS.";
+    reference
+      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
+       RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
+                 Authorization for Network Access Server (NAS)
+                 Management";
+  }
+
+  identity local-users {
+    base authentication-method;
+    description
+      "Indicates password-based authentication of locally
+       configured users.";
+  }
+
+  identity radius-authentication-type {
+    description
+      "Base identity for RADIUS authentication types.";
+  }
+
+  identity radius-pap {
+    base radius-authentication-type;
+    description
+      "The device requests Password Authentication Protocol (PAP)
+       authentication from the RADIUS server.";
+    reference
+      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
+  }
+
+
+
+
+
+
+
+
+  identity radius-chap {
+    base radius-authentication-type;
+    description
+      "The device requests Challenge Handshake Authentication
+       Protocol (CHAP) authentication from the RADIUS server.";
+    reference
+      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
+  }
+
+  /*
+   * Configuration data nodes
+   */
+
+  container system {
+    description
+      "System group configuration.";
+
+    leaf contact {
+      type string;
+      description
+        "The administrator contact information for the system.
+
+         A server implementation MAY map this leaf to the sysContact
+         MIB object.  Such an implementation needs to use some
+         mechanism to handle the differences in size and characters
+         allowed between this leaf and sysContact.  The definition of
+         such a mechanism is outside the scope of this document.";
+      reference
+        "RFC 3418: Management Information Base (MIB) for the
+                   Simple Network Management Protocol (SNMP)
+                   SNMPv2-MIB.sysContact";
+    }
+    leaf hostname {
+      type inet:domain-name;
+     description
+       "The name of the host.  This name can be a single domain
+        label or the fully qualified domain name of the host.";
+    }
+    leaf location {
+      type string;
+      description
+        "The system location.
+
+         A server implementation MAY map this leaf to the sysLocation
+         MIB object.  Such an implementation needs to use some
+         mechanism to handle the differences in size and characters
+         allowed between this leaf and sysLocation.  The definition
+         of such a mechanism is outside the scope of this document.";
+      reference
+        "RFC 3418: Management Information Base (MIB) for the
+                   Simple Network Management Protocol (SNMP)
+                   SNMPv2-MIB.sysLocation";
+    }
+
+    container clock {
+      description
+        "Configuration of the system date and time properties.";
+
+      choice timezone {
+        description
+          "The system time zone information.";
+
+        case timezone-name {
+          if-feature timezone-name;
+          leaf timezone-name {
+            type timezone-name;
+            description
+              "The TZ database name to use for the system, such
+               as 'Europe/Stockholm'.";
+          }
+        }
+        case timezone-utc-offset {
+          leaf timezone-utc-offset {
+            type int16 {
+              range "-1500 .. 1500";
+            }
+            units "minutes";
+            description
+              "The number of minutes to add to UTC time to
+               identify the time zone for this system.  For example,
+               'UTC - 8:00 hours' would be represented as '-480'.
+               Note that automatic daylight saving time adjustment
+               is not provided if this object is used.";
+          }
+        }
+      }
+    }
+
+    container ntp {
+      if-feature ntp;
+      presence
+        "Enables the NTP client unless the 'enabled' leaf
+         (which defaults to 'true') is set to 'false'";
+      description
+        "Configuration of the NTP client.";
+
+      leaf enabled {
+        type boolean;
+        default true;
+        description
+          "Indicates that the system should attempt to
+           synchronize the system clock with an NTP server
+           from the 'ntp/server' list.";
+      }
+      list server {
+        key name;
+        description
+          "List of NTP servers to use for system clock
+           synchronization.  If '/system/ntp/enabled'
+           is 'true', then the system will attempt to
+           contact and utilize the specified NTP servers.";
+
+        leaf name {
+          type string;
+          description
+            "An arbitrary name for the NTP server.";
+        }
+        choice transport {
+          mandatory true;
+          description
+            "The transport-protocol-specific parameters for this
+             server.";
+
+          case udp {
+            container udp {
+              description
+                "Contains UDP-specific configuration parameters
+                 for NTP.";
+              leaf address {
+                type inet:host;
+                mandatory true;
+                description
+                  "The address of the NTP server.";
+              }
+              leaf port {
+                if-feature ntp-udp-port;
+                type inet:port-number;
+                default 123;
+                description
+                  "The port number of the NTP server.";
+              }
+            }
+          }
+        }
+        leaf association-type {
+          type enumeration {
+            enum server {
+              description
+                "Use client association mode.  This device
+                 will not provide synchronization to the
+                 configured NTP server.";
+            }
+            enum peer {
+              description
+                "Use symmetric active association mode.
+                 This device may provide synchronization
+                 to the configured NTP server.";
+            }
+            enum pool {
+              description
+                "Use client association mode with one or
+                 more of the NTP servers found by DNS
+                 resolution of the domain name given by
+                 the 'address' leaf.  This device will not
+                 provide synchronization to the servers.";
+            }
+          }
+          default server;
+          description
+            "The desired association type for this NTP server.";
+        }
+        leaf iburst {
+          type boolean;
+          default false;
+          description
+            "Indicates whether this server should enable burst
+             synchronization or not.";
+        }
+        leaf prefer {
+          type boolean;
+          default false;
+          description
+            "Indicates whether this server should be preferred
+             or not.";
+        }
+      }
+    }
+
+    container dns-resolver {
+      description
+        "Configuration of the DNS resolver.";
+
+      leaf-list search {
+        type inet:domain-name;
+        ordered-by user;
+        description
+          "An ordered list of domains to search when resolving
+           a host name.";
+      }
+      list server {
+        key name;
+        ordered-by user;
+        description
+          "List of the DNS servers that the resolver should query.
+
+           When the resolver is invoked by a calling application, it
+           sends the query to the first name server in this list.  If
+           no response has been received within 'timeout' seconds,
+           the resolver continues with the next server in the list.
+           If no response is received from any server, the resolver
+           continues with the first server again.  When the resolver
+           has traversed the list 'attempts' times without receiving
+           any response, it gives up and returns an error to the
+           calling application.
+
+           Implementations MAY limit the number of entries in this
+           list.";
+
+        leaf name {
+          type string;
+          description
+            "An arbitrary name for the DNS server.";
+        }
+        choice transport {
+          mandatory true;
+          description
+            "The transport-protocol-specific parameters for this
+             server.";
+
+          case udp-and-tcp {
+            container udp-and-tcp {
+              description
+                "Contains UDP- and TCP-specific configuration
+                 parameters for DNS.";
+              reference
+                "RFC 1035: Domain Names - Implementation and
+                           Specification
+                 RFC 5966: DNS Transport over TCP - Implementation
+                           Requirements";
+
+              leaf address {
+                type inet:ip-address;
+                mandatory true;
+                description
+                  "The address of the DNS server.";
+              }
+              leaf port {
+                if-feature dns-udp-tcp-port;
+                type inet:port-number;
+                default 53;
+                description
+                  "The UDP and TCP port number of the DNS server.";
+              }
+            }
+          }
+        }
+      }
+      container options {
+        description
+          "Resolver options.  The set of available options has been
+           limited to those that are generally available across
+           different resolver implementations and generally useful.";
+        leaf timeout {
+          type uint8 {
+            range "1..max";
+          }
+          units "seconds";
+          default "5";
+          description
+            "The amount of time the resolver will wait for a
+             response from each remote name server before
+             retrying the query via a different name server.";
+        }
+        leaf attempts {
+          type uint8 {
+            range "1..max";
+          }
+          default "2";
+          description
+            "The number of times the resolver will send a query to
+             all of its name servers before giving up and returning
+             an error to the calling application.";
+        }
+      }
+    }
+
+
+
+    container radius {
+      if-feature radius;
+
+      description
+        "Configuration of the RADIUS client.";
+
+      list server {
+        key name;
+        ordered-by user;
+        description
+          "List of RADIUS servers used by the device.
+
+           When the RADIUS client is invoked by a calling
+           application, it sends the query to the first server in
+           this list.  If no response has been received within
+           'timeout' seconds, the client continues with the next
+           server in the list.  If no response is received from any
+           server, the client continues with the first server again.
+           When the client has traversed the list 'attempts' times
+           without receiving any response, it gives up and returns an
+           error to the calling application.";
+
+        leaf name {
+          type string;
+          description
+            "An arbitrary name for the RADIUS server.";
+        }
+        choice transport {
+          mandatory true;
+          description
+            "The transport-protocol-specific parameters for this
+             server.";
+
+          case udp {
+            container udp {
+              description
+                "Contains UDP-specific configuration parameters
+                 for RADIUS.";
+              leaf address {
+                type inet:host;
+                mandatory true;
+                description
+                  "The address of the RADIUS server.";
+              }
+
+
+
+
+              leaf authentication-port {
+                type inet:port-number;
+                default "1812";
+                description
+                  "The port number of the RADIUS server.";
+              }
+              leaf shared-secret {
+                type string;
+                mandatory true;
+                nacm:default-deny-all;
+                description
+                  "The shared secret, which is known to both the
+                   RADIUS client and server.";
+                reference
+                  "RFC 2865: Remote Authentication Dial In User
+                             Service (RADIUS)";
+              }
+            }
+          }
+        }
+        leaf authentication-type {
+          type identityref {
+            base radius-authentication-type;
+          }
+          default radius-pap;
+          description
+            "The authentication type requested from the RADIUS
+             server.";
+        }
+      }
+      container options {
+        description
+          "RADIUS client options.";
+
+        leaf timeout {
+          type uint8 {
+            range "1..max";
+          }
+          units "seconds";
+          default "5";
+          description
+            "The number of seconds the device will wait for a
+             response from each RADIUS server before trying with a
+             different server.";
+        }
+
+
+
+        leaf attempts {
+          type uint8 {
+            range "1..max";
+          }
+          default "2";
+          description
+            "The number of times the device will send a query to
+             all of its RADIUS servers before giving up.";
+        }
+      }
+    }
+
+    container authentication {
+      nacm:default-deny-write;
+      if-feature authentication;
+
+       description
+         "The authentication configuration subtree.";
+
+       leaf-list user-authentication-order {
+         type identityref {
+           base authentication-method;
+         }
+         must '(. != "sys:radius" or ../../radius/server)' {
+           error-message
+             "When 'radius' is used, a RADIUS server"
+           + " must be configured.";
+           description
+             "When 'radius' is used as an authentication method,
+              a RADIUS server must be configured.";
+         }
+         ordered-by user;
+
+         description
+           "When the device authenticates a user with a password,
+            it tries the authentication methods in this leaf-list in
+            order.  If authentication with one method fails, the next
+            method is used.  If no method succeeds, the user is
+            denied access.
+
+            An empty user-authentication-order leaf-list still allows
+            authentication of users using mechanisms that do not
+            involve a password.
+
+            If the 'radius-authentication' feature is advertised by
+            the NETCONF server, the 'radius' identity can be added to
+            this list.
+
+            If the 'local-users' feature is advertised by the
+            NETCONF server, the 'local-users' identity can be
+            added to this list.";
+       }
+
+       list user {
+         if-feature local-users;
+         key name;
+         description
+           "The list of local users configured on this device.";
+
+         leaf name {
+           type string;
+           description
+            "The user name string identifying this entry.";
+         }
+         leaf password {
+           type ianach:crypt-hash;
+           description
+             "The password for this entry.";
+         }
+         list authorized-key {
+           key name;
+           description
+             "A list of public SSH keys for this user.  These keys
+              are allowed for SSH authentication, as described in
+              RFC 4253.";
+           reference
+             "RFC 4253: The Secure Shell (SSH) Transport Layer
+                        Protocol";
+
+           leaf name {
+             type string;
+             description
+               "An arbitrary name for the SSH key.";
+           }
+
+
+
+
+
+
+
+
+
+
+
+
+           leaf algorithm {
+             type string;
+             mandatory true;
+             description
+               "The public key algorithm name for this SSH key.
+
+                Valid values are the values in the IANA 'Secure Shell
+                (SSH) Protocol Parameters' registry, Public Key
+                Algorithm Names.";
+             reference
+               "IANA 'Secure Shell (SSH) Protocol Parameters'
+                registry, Public Key Algorithm Names";
+           }
+           leaf key-data {
+             type binary;
+             mandatory true;
+             description
+               "The binary public key data for this SSH key, as
+                specified by RFC 4253, Section 6.6, i.e.:
+
+                  string    certificate or public key format
+                            identifier
+                  byte[n]   key/certificate data.";
+             reference
+               "RFC 4253: The Secure Shell (SSH) Transport Layer
+                          Protocol";
+           }
+         }
+       }
+     }
+  }
+
+  /*
+   * Operational state data nodes
+   */
+
+  container system-state {
+    config false;
+    description
+      "System group operational state.";
+
+    container platform {
+      description
+        "Contains vendor-specific information for
+         identifying the system platform and operating system.";
+      reference
+        "IEEE Std 1003.1-2008 - sys/utsname.h";
+
+      leaf os-name {
+        type string;
+        description
+          "The name of the operating system in use -
+           for example, 'Linux'.";
+        reference
+          "IEEE Std 1003.1-2008 - utsname.sysname";
+      }
+      leaf os-release {
+        type string;
+        description
+          "The current release level of the operating
+           system in use.  This string MAY indicate
+           the OS source code revision.";
+        reference
+          "IEEE Std 1003.1-2008 - utsname.release";
+      }
+      leaf os-version {
+        type string;
+        description
+          "The current version level of the operating
+           system in use.  This string MAY indicate
+           the specific OS build date and target variant
+           information.";
+        reference
+          "IEEE Std 1003.1-2008 - utsname.version";
+      }
+      leaf machine {
+        type string;
+        description
+          "A vendor-specific identifier string representing
+           the hardware in use.";
+        reference
+          "IEEE Std 1003.1-2008 - utsname.machine";
+      }
+    }
+
+    container clock {
+      description
+        "Monitoring of the system date and time properties.";
+
+      leaf current-datetime {
+        type yang:date-and-time;
+        description
+          "The current system date and time.";
+      }
+
+
+      leaf boot-datetime {
+        type yang:date-and-time;
+        description
+          "The system date and time when the system last restarted.";
+      }
+    }
+  }
+
+  rpc set-current-datetime {
+    nacm:default-deny-all;
+    description
+      "Set the /system-state/clock/current-datetime leaf
+       to the specified value.
+
+       If the system is using NTP (i.e., /system/ntp/enabled
+       is set to 'true'), then this operation will fail with
+       error-tag 'operation-failed' and error-app-tag value of
+       'ntp-active'.";
+    input {
+      leaf current-datetime {
+        type yang:date-and-time;
+        mandatory true;
+        description
+          "The current system date and time.";
+      }
+    }
+  }
+
+  rpc system-restart {
+    nacm:default-deny-all;
+    description
+      "Request that the entire system be restarted immediately.
+       A server SHOULD send an rpc reply to the client before
+       restarting the system.";
+  }
+
+  rpc system-shutdown {
+    nacm:default-deny-all;
+    description
+      "Request that the entire system be shut down immediately.
+       A server SHOULD send an rpc reply to the client before
+       shutting down the system.";
+  }
+
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-yang-library@2016-04-09.yang b/sdnr/model/yang/ietf-yang-library@2016-04-09.yang
new file mode 100644
index 0000000..31fc9ee
--- /dev/null
+++ b/sdnr/model/yang/ietf-yang-library@2016-04-09.yang
@@ -0,0 +1,263 @@
+module ietf-yang-library {
+    namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
+    prefix "yanglib";
+
+    import ietf-yang-types {
+      prefix yang;
+    }
+    import ietf-inet-types {
+      prefix inet;
+    }
+
+    organization
+      "IETF NETCONF (Network Configuration) Working Group";
+
+    contact
+      "WG Web:   <http://tools.ietf.org/wg/netconf/>
+       WG List:  <mailto:netconf@ietf.org>
+
+       WG Chair: Mehmet Ersue
+                 <mailto:mehmet.ersue@nsn.com>
+
+       WG Chair: Mahesh Jethanandani
+                 <mailto:mjethanandani@gmail.com>
+
+       Editor:   Andy Bierman
+                 <mailto:andy@yumaworks.com>
+
+       Editor:   Martin Bjorklund
+                 <mailto:mbj@tail-f.com>
+
+       Editor:   Kent Watsen
+                 <mailto:kwatsen@juniper.net>";
+
+    description
+      "This module contains monitoring information about the YANG
+       modules and submodules that are used within a YANG-based
+       server.
+
+       Copyright (c) 2016 IETF Trust and the persons identified as
+       authors of the code.  All rights reserved.
+
+       Redistribution and use in source and binary forms, with or
+       without modification, is permitted pursuant to, and subject
+       to the license terms contained in, the Simplified BSD License
+       set forth in Section 4.c of the IETF Trust's Legal Provisions
+       Relating to IETF Documents
+       (http://trustee.ietf.org/license-info).
+
+       This version of this YANG module is part of RFC XXXX; see
+       the RFC itself for full legal notices.";
+
+    // RFC Ed.: replace XXXX with actual RFC number and remove this
+    // note.
+
+    // RFC Ed.: remove this note
+    // Note: extracted from draft-ietf-netconf-yang-library-06.txt
+
+    // RFC Ed.: update the date below with the date of RFC publication
+    // and remove this note.
+    revision 2016-04-09 {
+      description
+        "Initial revision.";
+      reference
+        "RFC XXXX: YANG Module Library.";
+    }
+
+    /*
+     * Typedefs
+     */
+
+    // FIXME inline this union after https://bugs.opendaylight.org/show_bug.cgi?id=5826 is fixed
+    typedef optional-revision {
+      type union {
+        type revision-identifier;
+        type string { length 0; }
+      }
+      description
+        "The YANG module or submodule revision date.
+         A zero-length string is used if no revision statement
+         is present in the YANG module or submodule.";
+    }
+
+    typedef revision-identifier {
+      type string {
+        pattern '\d{4}-\d{2}-\d{2}';
+      }
+      description
+        "Represents a specific date in YYYY-MM-DD format.";
+    }
+
+    /*
+     * Groupings
+     */
+
+    grouping module-list {
+      description
+        "The module data structure is represented as a grouping
+         so it can be reused in configuration or another monitoring
+         data structure.";
+
+      grouping common-leafs {
+        description
+          "Common parameters for YANG modules and submodules.";
+
+        leaf name {
+          type yang:yang-identifier;
+          description
+            "The YANG module or submodule name.";
+        }
+        leaf revision {
+          type optional-revision;
+        }
+      }
+
+      grouping schema-leaf {
+        description
+          "Common schema leaf parameter for modules and submodules.";
+
+        leaf schema {
+          type inet:uri;
+          description
+            "Contains a URL that represents the YANG schema
+             resource for this module or submodule.
+
+             This leaf will only be present if there is a URL
+             available for retrieval of the schema for this entry.";
+        }
+      }
+
+      list module {
+        key "name revision";
+        description
+          "Each entry represents one revision of one module
+           currently supported by the server.";
+
+        uses common-leafs;
+        uses schema-leaf;
+
+        leaf namespace {
+          type inet:uri;
+          mandatory true;
+          description
+            "The XML namespace identifier for this module.";
+        }
+        leaf-list feature {
+          type yang:yang-identifier;
+          description
+            "List of YANG feature names from this module that are
+             supported by the server, regardless whether they are
+             defined in the module or any included submodule.";
+        }
+        list deviation {
+          key "name revision";
+          description
+            "List of YANG deviation module names and revisions
+             used by this server to modify the conformance of
+             the module associated with this entry.  Note that
+             the same module can be used for deviations for
+             multiple modules, so the same entry MAY appear
+             within multiple 'module' entries.
+
+             The deviation module MUST be present in the 'module'
+             list, with the same name and revision values.
+             The 'conformance-type' value will be 'implement' for
+             the deviation module.";
+          uses common-leafs;
+        }
+        leaf conformance-type {
+          type enumeration {
+            enum implement {
+              description
+                "Indicates that the server implements one or more
+                 protocol-accessible objects defined in the YANG module
+                 identified in this entry.  This includes deviation
+                 statements defined in the module.
+
+                 For YANG version 1.1 modules, there is at most one
+                 module entry with conformance type 'implement' for a
+                 particular module name, since YANG 1.1 requires that
+                 at most one revision of a module is implemented.
+
+                 For YANG version 1 modules, there SHOULD NOT be more
+                 than one module entry for a particular module name.";
+            }
+            enum import {
+              description
+                "Indicates that the server imports reusable definitions
+                 from the specified revision of the module, but does
+                 not implement any protocol accessible objects from
+                 this revision.
+
+                 Multiple module entries for the same module name MAY
+                 exist. This can occur if multiple modules import the
+                 same module, but specify different revision-dates in
+                 the import statements.";
+            }
+          }
+          mandatory true;
+          description
+            "Indicates the type of conformance the server is claiming
+             for the YANG module identified by this entry.";
+        }
+        container submodules {
+          description
+            "Contains information about all the submodules used
+             by the parent module entry";
+
+          list submodule {
+            key "name revision";
+            description
+              "Each entry represents one submodule within the
+               parent module.";
+            uses common-leafs;
+            uses schema-leaf;
+          }
+        }
+      }
+    }
+
+    /*
+     * Operational state data nodes
+     */
+
+    container modules-state {
+      config false;
+      description
+        "Contains YANG module monitoring information.";
+
+      leaf module-set-id {
+        type string;
+        mandatory true;
+        description
+          "Contains a server-specific identifier representing
+           the current set of modules and submodules.  The
+           server MUST change the value of this leaf if the
+           information represented by the 'module' list instances
+           has changed.";
+      }
+
+      uses module-list;
+    }
+
+    /*
+     * Notifications
+     */
+
+    notification yang-library-change {
+      description
+       "Generated when the set of modules and submodules supported
+        by the server has changed.";
+      leaf module-set-id {
+        type leafref {
+          path "/yanglib:modules-state/yanglib:module-set-id";
+        }
+        mandatory true;
+        description
+          "Contains the module-set-id value representing the
+           set of modules and submodules supported at the server at
+           the time the notification is generated.";
+      }
+    }
+
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-yang-types@2013-07-15.yang b/sdnr/model/yang/ietf-yang-types@2013-07-15.yang
new file mode 100644
index 0000000..bdff18c
--- /dev/null
+++ b/sdnr/model/yang/ietf-yang-types@2013-07-15.yang
@@ -0,0 +1,467 @@
+module ietf-yang-types {
+
+     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+     prefix "yang";
+
+     organization
+      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+     contact
+      "WG Web:   <http://tools.ietf.org/wg/netmod/>
+       WG List:  <mailto:netmod@ietf.org>
+       WG Chair: David Kessens
+                 <mailto:david.kessens@nsn.com>
+
+       WG Chair: Juergen Schoenwaelder
+                 <mailto:j.schoenwaelder@jacobs-university.de>
+
+       Editor:   Juergen Schoenwaelder
+                 <mailto:j.schoenwaelder@jacobs-university.de>";
+
+     description
+      "This module contains a collection of generally useful derived
+       YANG data types.
+
+       Copyright (c) 2013 IETF Trust and the persons identified as
+       authors of the code.  All rights reserved.
+
+       Redistribution and use in source and binary forms, with or
+       without modification, is permitted pursuant to, and subject
+       to the license terms contained in, the Simplified BSD License
+       set forth in Section 4.c of the IETF Trust's Legal Provisions
+       Relating to IETF Documents
+       (http://trustee.ietf.org/license-info).
+
+       This version of this YANG module is part of RFC 6991; see
+       the RFC itself for full legal notices.";
+
+     revision 2013-07-15 {
+       description
+        "This revision adds the following new data types:
+         - yang-identifier
+         - hex-string
+         - uuid
+         - dotted-quad";
+       reference
+        "RFC 6991: Common YANG Data Types";
+     }
+
+     revision 2010-09-24 {
+       description
+        "Initial revision.";
+       reference
+        "RFC 6021: Common YANG Data Types";
+     }
+
+     /*** collection of counter and gauge types ***/
+
+     typedef counter32 {
+       type uint32;
+       description
+        "The counter32 type represents a non-negative integer
+         that monotonically increases until it reaches a
+         maximum value of 2^32-1 (4294967295 decimal), when it
+         wraps around and starts increasing again from zero.
+
+         Counters have no defined 'initial' value, and thus, a
+         single value of a counter has (in general) no information
+         content.  Discontinuities in the monotonically increasing
+         value normally occur at re-initialization of the
+         management system, and at other times as specified in the
+         description of a schema node using this type.  If such
+         other times can occur, for example, the creation of
+         a schema node of type counter32 at times other than
+         re-initialization, then a corresponding schema node
+         should be defined, with an appropriate type, to indicate
+         the last discontinuity.
+
+         The counter32 type should not be used for configuration
+         schema nodes.  A default statement SHOULD NOT be used in
+         combination with the type counter32.
+
+         In the value set and its semantics, this type is equivalent
+         to the Counter32 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef zero-based-counter32 {
+       type yang:counter32;
+       default "0";
+       description
+        "The zero-based-counter32 type represents a counter32
+         that has the defined 'initial' value zero.
+
+         A schema node of this type will be set to zero (0) on creation
+         and will thereafter increase monotonically until it reaches
+         a maximum value of 2^32-1 (4294967295 decimal), when it
+         wraps around and starts increasing again from zero.
+
+         Provided that an application discovers a new schema node
+         of this type within the minimum time to wrap, it can use the
+         'initial' value as a delta.  It is important for a management
+         station to be aware of this minimum time and the actual time
+         between polls, and to discard data if the actual time is too
+         long or there is no defined minimum time.
+        In the value set and its semantics, this type is equivalent
+         to the ZeroBasedCounter32 textual convention of the SMIv2.";
+       reference
+         "RFC 4502: Remote Network Monitoring Management Information
+                    Base Version 2";
+     }
+
+     typedef counter64 {
+       type uint64;
+       description
+        "The counter64 type represents a non-negative integer
+         that monotonically increases until it reaches a
+         maximum value of 2^64-1 (18446744073709551615 decimal),
+         when it wraps around and starts increasing again from zero.
+
+         Counters have no defined 'initial' value, and thus, a
+         single value of a counter has (in general) no information
+         content.  Discontinuities in the monotonically increasing
+         value normally occur at re-initialization of the
+         management system, and at other times as specified in the
+         description of a schema node using this type.  If such
+         other times can occur, for example, the creation of
+         a schema node of type counter64 at times other than
+         re-initialization, then a corresponding schema node
+         should be defined, with an appropriate type, to indicate
+         the last discontinuity.
+
+         The counter64 type should not be used for configuration
+         schema nodes.  A default statement SHOULD NOT be used in
+         combination with the type counter64.
+
+         In the value set and its semantics, this type is equivalent
+         to the Counter64 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef zero-based-counter64 {
+       type yang:counter64;
+       default "0";
+       description
+        "The zero-based-counter64 type represents a counter64 that
+         has the defined 'initial' value zero.
+         A schema node of this type will be set to zero (0) on creation
+         and will thereafter increase monotonically until it reaches
+         a maximum value of 2^64-1 (18446744073709551615 decimal),
+         when it wraps around and starts increasing again from zero.
+
+         Provided that an application discovers a new schema node
+         of this type within the minimum time to wrap, it can use the
+         'initial' value as a delta.  It is important for a management
+         station to be aware of this minimum time and the actual time
+         between polls, and to discard data if the actual time is too
+         long or there is no defined minimum time.
+
+         In the value set and its semantics, this type is equivalent
+         to the ZeroBasedCounter64 textual convention of the SMIv2.";
+       reference
+        "RFC 2856: Textual Conventions for Additional High Capacity
+                   Data Types";
+     }
+
+     typedef gauge32 {
+       type uint32;
+       description
+        "The gauge32 type represents a non-negative integer, which
+         may increase or decrease, but shall never exceed a maximum
+         value, nor fall below a minimum value.  The maximum value
+         cannot be greater than 2^32-1 (4294967295 decimal), and
+         the minimum value cannot be smaller than 0.  The value of
+         a gauge32 has its maximum value whenever the information
+         being modeled is greater than or equal to its maximum
+         value, and has its minimum value whenever the information
+         being modeled is smaller than or equal to its minimum value.
+         If the information being modeled subsequently decreases
+         below (increases above) the maximum (minimum) value, the
+         gauge32 also decreases (increases).
+
+         In the value set and its semantics, this type is equivalent
+         to the Gauge32 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef gauge64 {
+       type uint64;
+       description
+        "The gauge64 type represents a non-negative integer, which
+         may increase or decrease, but shall never exceed a maximum
+         value, nor fall below a minimum value.  The maximum value
+         cannot be greater than 2^64-1 (18446744073709551615), and
+         the minimum value cannot be smaller than 0.  The value of
+         a gauge64 has its maximum value whenever the information
+         being modeled is greater than or equal to its maximum
+         value, and has its minimum value whenever the information
+         being modeled is smaller than or equal to its minimum value.
+         If the information being modeled subsequently decreases
+         below (increases above) the maximum (minimum) value, the
+         gauge64 also decreases (increases).
+
+         In the value set and its semantics, this type is equivalent
+         to the CounterBasedGauge64 SMIv2 textual convention defined
+         in RFC 2856";
+       reference
+        "RFC 2856: Textual Conventions for Additional High Capacity
+                   Data Types";
+     }
+
+     /*** collection of identifier-related types ***/
+
+     typedef object-identifier {
+       type string {
+         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+               + '(\.(0|([1-9]\d*)))*';
+       }
+       description
+        "The object-identifier type represents administratively
+         assigned names in a registration-hierarchical-name tree.
+
+         Values of this type are denoted as a sequence of numerical
+         non-negative sub-identifier values.  Each sub-identifier
+         value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+         are separated by single dots and without any intermediate
+         whitespace.
+
+         The ASN.1 standard restricts the value space of the first
+         sub-identifier to 0, 1, or 2.  Furthermore, the value space
+         of the second sub-identifier is restricted to the range
+         0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+         the ASN.1 standard requires that an object identifier
+         has always at least two sub-identifiers.  The pattern
+         captures these restrictions.
+
+         Although the number of sub-identifiers is not limited,
+         module designers should realize that there may be
+         implementations that stick with the SMIv2 limit of 128
+         sub-identifiers.
+         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+         since it is not restricted to 128 sub-identifiers.  Hence,
+         this type SHOULD NOT be used to represent the SMIv2 OBJECT
+         IDENTIFIER type; the object-identifier-128 type SHOULD be
+         used instead.";
+       reference
+        "ISO9834-1: Information technology -- Open Systems
+         Interconnection -- Procedures for the operation of OSI
+         Registration Authorities: General procedures and top
+         arcs of the ASN.1 Object Identifier tree";
+     }
+
+     typedef object-identifier-128 {
+       type object-identifier {
+         pattern '\d*(\.\d*){1,127}';
+       }
+       description
+        "This type represents object-identifiers restricted to 128
+         sub-identifiers.
+
+         In the value set and its semantics, this type is equivalent
+         to the OBJECT IDENTIFIER type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef yang-identifier {
+       type string {
+         length "1..max";
+         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+       }
+       description
+         "A YANG identifier string as defined by the 'identifier'
+          rule in Section 12 of RFC 6020.  An identifier must
+          start with an alphabetic character or an underscore
+          followed by an arbitrary sequence of alphabetic or
+          numeric characters, underscores, hyphens, or dots.
+
+          A YANG identifier MUST NOT start with any possible
+          combination of the lowercase or uppercase character
+          sequence 'xml'.";
+       reference
+         "RFC 6020: YANG - A Data Modeling Language for the Network
+                    Configuration Protocol (NETCONF)";
+     }
+     /*** collection of types related to date and time***/
+
+     typedef date-and-time {
+       type string {
+         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+               + '(Z|[\+\-]\d{2}:\d{2})';
+       }
+       description
+        "The date-and-time type is a profile of the ISO 8601
+         standard for representation of dates and times using the
+         Gregorian calendar.  The profile is defined by the
+         date-time production in Section 5.6 of RFC 3339.
+
+         The date-and-time type is compatible with the dateTime XML
+         schema type with the following notable exceptions:
+
+         (a) The date-and-time type does not allow negative years.
+
+         (b) The date-and-time time-offset -00:00 indicates an unknown
+             time zone (see RFC 3339) while -00:00 and +00:00 and Z
+             all represent the same time zone in dateTime.
+
+         (c) The canonical format (see below) of data-and-time values
+             differs from the canonical format used by the dateTime XML
+             schema type, which requires all times to be in UTC using
+             the time-offset 'Z'.
+
+         This type is not equivalent to the DateAndTime textual
+         convention of the SMIv2 since RFC 3339 uses a different
+         separator between full-date and full-time and provides
+         higher resolution of time-secfrac.
+
+         The canonical format for date-and-time values with a known time
+         zone uses a numeric time zone offset that is calculated using
+         the device's configured known offset to UTC time.  A change of
+         the device's offset to UTC time will cause date-and-time values
+         to change accordingly.  Such changes might happen periodically
+         in case a server follows automatically daylight saving time
+         (DST) time zone offset changes.  The canonical format for
+         date-and-time values with an unknown time zone (usually
+         referring to the notion of local time) uses the time-offset
+         -00:00.";
+       reference
+        "RFC 3339: Date and Time on the Internet: Timestamps
+         RFC 2579: Textual Conventions for SMIv2
+         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+     }
+     typedef timeticks {
+       type uint32;
+       description
+        "The timeticks type represents a non-negative integer that
+         represents the time, modulo 2^32 (4294967296 decimal), in
+         hundredths of a second between two epochs.  When a schema
+         node is defined that uses this type, the description of
+         the schema node identifies both of the reference epochs.
+
+         In the value set and its semantics, this type is equivalent
+         to the TimeTicks type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef timestamp {
+       type yang:timeticks;
+       description
+        "The timestamp type represents the value of an associated
+         timeticks schema node at which a specific occurrence
+         happened.  The specific occurrence must be defined in the
+         description of any schema node defined using this type.  When
+         the specific occurrence occurred prior to the last time the
+         associated timeticks attribute was zero, then the timestamp
+         value is zero.  Note that this requires all timestamp values
+         to be reset to zero when the value of the associated timeticks
+         attribute reaches 497+ days and wraps around to zero.
+
+         The associated timeticks schema node must be specified
+         in the description of any schema node using this type.
+
+         In the value set and its semantics, this type is equivalent
+         to the TimeStamp textual convention of the SMIv2.";
+       reference
+        "RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     /*** collection of generic address types ***/
+
+     typedef phys-address {
+       type string {
+         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+       }
+       description
+        "Represents media- or physical-level addresses represented
+         as a sequence octets, each octet represented by two hexadecimal
+         numbers.  Octets are separated by colons.  The canonical
+         representation uses lowercase characters.
+
+         In the value set and its semantics, this type is equivalent
+         to the PhysAddress textual convention of the SMIv2.";
+       reference
+        "RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     typedef mac-address {
+       type string {
+         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+       }
+       description
+        "The mac-address type represents an IEEE 802 MAC address.
+         The canonical representation uses lowercase characters.
+
+         In the value set and its semantics, this type is equivalent
+         to the MacAddress textual convention of the SMIv2.";
+       reference
+        "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                   Networks: Overview and Architecture
+         RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     /*** collection of XML-specific types ***/
+
+     typedef xpath1.0 {
+       type string;
+       description
+        "This type represents an XPATH 1.0 expression.
+
+         When a schema node is defined that uses this type, the
+         description of the schema node MUST specify the XPath
+         context in which the XPath expression is evaluated.";
+       reference
+        "XPATH: XML Path Language (XPath) Version 1.0";
+     }
+
+     /*** collection of string types ***/
+
+     typedef hex-string {
+       type string {
+         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+       }
+       description
+        "A hexadecimal string with octets represented as hex digits
+         separated by colons.  The canonical representation uses
+         lowercase characters.";
+     }
+
+     typedef uuid {
+       type string {
+         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+       }
+       description
+        "A Universally Unique IDentifier in the string representation
+         defined in RFC 4122.  The canonical representation uses
+         lowercase characters.
+
+         The following is an example of a UUID in string representation:
+         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+         ";
+       reference
+        "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                   Namespace";
+     }
+
+     typedef dotted-quad {
+       type string {
+         pattern
+           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+         + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+       }
+       description
+         "An unsigned 32-bit number expressed in the dotted-quad
+          notation, i.e., four octets written as decimal numbers
+          and separated with the '.' (full stop) character.";
+     }
+   }
\ No newline at end of file
diff --git a/sdnr/model/yang/ltp-path@2017-05-26.yang b/sdnr/model/yang/ltp-path@2017-05-26.yang
new file mode 100644
index 0000000..e9404d8
--- /dev/null
+++ b/sdnr/model/yang/ltp-path@2017-05-26.yang
@@ -0,0 +1,138 @@
+module ltp-path {
+  namespace "urn:onf:params:xml:ns:yang:ltp-path";
+  prefix ltp-path;
+
+  import core-model {
+    prefix core-model;
+  }
+
+  organization
+   "ONF (Open Networking Foundation) Open Transport Working Group -
+    Wireless Transport Project";
+  contact 
+    "WG Web: <https://www.opennetworking.org/technical-communities/areas/
+              specification/1931-optical-transport>
+     WG List:  <mailto:wireless-transport@login.opennetworking.org>
+     WG Chair: Lyndon Ong
+               <mailto:lyong@ciena.com>
+     WG Chair: Giorgio Cazzaniga
+               <mailto:giorgio.cazzaniga@sm-optics.com>
+     Editor:   Martin Skorupski
+               <mailto:martin.skorupski@highstreet-technologies.com>";
+  description 
+    "This module contains a collection of YANG definitions describing a 
+     telecommunication network path.";
+ 
+  revision 2017-05-26 {
+    description "Initial version";
+    reference "ltp-path, ONF core-model 1.2";
+  }
+
+  typedef layer-protocol-name-enumeration {
+    type enumeration {
+      enum ETH {
+        value 1;
+        description
+          "Identifying the layer of Ethernet.";
+      }
+      enum PTP {
+        value 2;
+        description
+          "Identifying the layer or the Precision Time Protocol.";
+       }
+    }
+
+    description
+      "The propagation of the layer protocol name.";
+  }
+
+  container ltp-path {
+    description
+      "Listing all the path-identifiers, used by RESTCONF interfaces to
+       address an entry in the ltp-path-list.";
+
+    leaf-list path-identifier {
+      type leafref {
+        path '/ltp-path/ltp-path-list/path-id';
+      }
+      description 
+        "List of reference values for existing path entries.";
+    }
+
+    list ltp-path-list {
+
+      key "path-id";
+
+      description
+        "A list of path found in the network.";
+
+      leaf path-id {
+        type string;
+        description
+          "A unique identifier of a path. It migth be beneficial to use the 
+           format as defined in RFC 4122 
+           (https://www.ietf.org/rfc/rfc4122.txt).";
+      }
+
+      leaf path-name {
+        type string;
+        description
+          "The human readable name of a path. It should include start 
+           and end point.";
+      }
+
+      leaf forwarding-direction {
+        type core-model:forwarding-direction;
+        description
+          "Defines the directionality of the path.";
+      }
+
+      leaf layer-protocol-name {
+        type layer-protocol-name-enumeration;
+        description
+          "Defines the layer of the path. Please see ONF CoreModel for 
+           further details.";
+      }
+
+      list logical-termination-point-list {
+
+        key "ltp-index";
+        min-elements 2;
+
+        description
+          "An ordered list of logical-termination points, defining the path.";
+
+        leaf ltp-index {
+          type string;
+          description
+            "The index of the LTP with in the list. The LTP with the highest
+             index is the end-point of the path. The LTP with the lowest
+             index is the start-point of the path.";
+        }
+
+        leaf ltp-reference {
+          type leafref {
+            path '/core-model:network-element/core-model:ltp/core-model:uuid';
+          }
+          description
+            "The reference value of a network-elements LTP.";
+        }
+
+        leaf physical-port-reference {
+          type string;
+          description
+            "A text label for the unmodelled physical port associated with 
+             the LTP. In many cases there is no associated physical port.";
+        }
+    
+        leaf node-reference {
+          type leafref {
+            path '/core-model:network-element/core-model:uuid';
+          }
+          description
+            "A reference value identifying a network-element.";
+        }
+      }
+   }
+  }
+}
diff --git a/sdnr/model/yang/microwave-model@2017-03-24.yang b/sdnr/model/yang/microwave-model@2017-03-24.yang
new file mode 100644
index 0000000..e6b6bb3
--- /dev/null
+++ b/sdnr/model/yang/microwave-model@2017-03-24.yang
@@ -0,0 +1,2262 @@
+module microwave-model {
+    namespace "urn:onf:params:xml:ns:yang:microwave-model";
+    prefix microwave-model;
+
+    import core-model {
+        prefix core-model;
+    }
+    import g.874.1-model {
+        prefix g;
+    }
+    import ietf-yang-types {
+        prefix yang;
+    }
+
+    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG List:  <mailto:wireless-transport@login.opennetworking.org>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             WG Chair: Giorgio Cazzaniga
+                       <mailto:giorgio.cazzaniga@sm-optics.com>
+             Editors:  Thorsten Heinze
+                       <mailto:thorsten.heinze@telefonica.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "This module contains a collection of YANG definitions for managing wireless networks.";
+    revision 2017-03-24 {
+        description "Initial version";
+        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
+    }
+    /***********************
+    * package type-definitions
+    **********************/ 
+        typedef loop-back-type {
+            type enumeration {
+                enum none {
+                    description "none";
+                }
+                enum if {
+                    description "Intermediate Frequency on the interface between indoor and outdoor unit.";
+                }
+                enum rf {
+                    description "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site.";
+                }
+            }
+            description "none";
+        }
+        typedef severity-type {
+            type enumeration {
+                enum non-alarmed {
+                    description "none";
+                }
+                enum warning {
+                    description "none";
+                }
+                enum minor {
+                    description "none";
+                }
+                enum major {
+                    description "none";
+                }
+                enum critical {
+                    description "none";
+                }
+            }
+            description "According to ITU-T M.3160";
+        }
+        grouping channel-plan-type-g {
+            leaf supported-channel-plan {
+                type string;
+                default "Channel plan name not defined.";
+                config false;
+                description "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database.";
+            }
+            leaf duplex-distance-is-variable {
+                type boolean;
+                default false;
+                config false;
+                description "To be set on  'true', if the distance between transmitted and received frequency is variable.";
+            }
+            leaf duplex-distance {
+                type int32;
+                units "kHz";
+                default -1;
+                config false;
+                description "Distance between transmitted and received frequency.";
+            }
+            leaf auto-freq-select-is-avail {
+                type boolean;
+                default false;
+                config false;
+                description "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'.";
+            }
+            list transmission-mode-list {
+                key 'transmission-mode-id';
+                config false;
+                min-elements 1;
+                uses transmission-mode-type-g;
+                description "none";
+            }
+            description "none";
+        }
+        grouping transmission-mode-type-g {
+            leaf transmission-mode-id {
+                type core-model:universal-id;
+                config false;
+                description "Indentifies the transmissionMode for internal reference.";
+            }
+            leaf channel-bandwidth {
+                type int32;
+                units "kHz";
+                default -1;
+                config false;
+                description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
+            }
+            leaf modulation-scheme {
+                type int16;
+                units "symbols";
+                default -1;
+                config false;
+                description "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256').";
+            }
+            leaf code-rate {
+                type int8;
+                units "%";
+                default -1;
+                config false;
+                description "Code rate of the coding scheme in % (Net bit rate ? Gross bit rate ? code rate).";
+            }
+            leaf tx-power-min {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Value of the minimum transmit power the modem can operate in dBm.";
+            }
+            leaf tx-power-max {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Value of the maximum transmit power the modem can operate in dBm.";
+            }
+            leaf rx-threshold {
+                type int16;
+                units "dBm";
+                default 99;
+                config false;
+                description "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less.";
+            }
+            leaf am-upshift-level {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Value of the receive level that has to be exceeded to shift into a higher modulation scheme.";
+            }
+            leaf am-downshift-level {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme.";
+            }
+            leaf xpic-is-avail {
+                type boolean;
+                default false;
+                config false;
+                description "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case.";
+            }
+            description "none";
+        }
+        typedef polarization-type {
+            type enumeration {
+                enum not-specified {
+                    description "none";
+                }
+                enum horizontal {
+                    description "none";
+                }
+                enum vertical {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        grouping air-interface-problem-severity-type-g {
+            leaf problem-kind-name {
+                type string;
+                default "Problem kind name not defined.";
+                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
+            }
+            leaf problem-kind-severity {
+                type severity-type;
+                default warning;
+                description "Severity of this type of alarm.";
+            }
+            description "none";
+        }
+        grouping air-interface-current-problem-type-g {
+            leaf problem-name {
+                type string;
+                default "Problem name not specified.";
+                config false;
+                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
+            }
+            uses mw-current-problem-g;
+            description "none";
+        }
+        grouping air-interface-performance-type-g {
+            leaf es {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Number of errored seconds.";
+            }
+            leaf ses {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Number of severely errored seconds.";
+            }
+            leaf cses {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Number of consecutive severely errored seconds.";
+            }
+            leaf unavailability {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Total time of unavailability in seconds.";
+            }
+            leaf tx-level-min {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Minimum transmit power. Signed integers are required.";
+            }
+            leaf tx-level-max {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Maximum transmit power. Signed integers are required.";
+            }
+            leaf tx-level-avg {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Averaged transmit power. Signed integers are required.";
+            }
+            leaf rx-level-min {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Minimum receive level. Signed integers are required.";
+            }
+            leaf rx-level-max {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Maximum receive level. Signed integers are required.";
+            }
+            leaf rx-level-avg {
+                type int8;
+                units "dBm";
+                default 99;
+                config false;
+                description "Averaged receive level. Signed integers are required.";
+            }
+            leaf time2-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Sum of all seconds the transmitter operated in e.g. BPSK.";
+            }
+            leaf time4-states-s {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time4-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time8-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time16-states-s {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time16-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time32-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time64-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time128-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time256-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time512-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time512-states-l {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time1024-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time1024-states-l {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time2048-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time2048-states-l {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time4096-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time4096-states-l {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time8192-states {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf time8192-states-l {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "none";
+            }
+            leaf snir-min {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Minimum signal to (noise+interference) ratio.";
+            }
+            leaf snir-max {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Maximum signal to (noise+interference) ratio.";
+            }
+            leaf snir-avg {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Averaged signal to (noise+interference) ratio.";
+            }
+            leaf xpd-min {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Minimum cross polarization discrimination.";
+            }
+            leaf xpd-max {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Maximum cross polarization discrimination.";
+            }
+            leaf xpd-avg {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Averaged cross polarization discrimination.";
+            }
+            leaf rf-temp-min {
+                type int8;
+                units "C";
+                default -99;
+                config false;
+                description "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
+            }
+            leaf rf-temp-max {
+                type int8;
+                units "C";
+                default -99;
+                config false;
+                description "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
+            }
+            leaf rf-temp-avg {
+                type int8;
+                units "C";
+                default -99;
+                config false;
+                description "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit.";
+            }
+            leaf defect-blocks-sum {
+                type int16;
+                units "blocks";
+                default -1;
+                config false;
+                description "Total number of blocks that were defect after receiving and could not be corrected by the FEC.";
+            }
+            leaf time-period {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Total length of the measurement period.";
+            }
+            description "Consolidated performance information of the air interface.";
+        }
+        grouping air-interface-current-performance-type-g {
+            container performance-data {
+                config false;
+                uses air-interface-performance-type-g;
+                description "none";
+            }
+            uses g:otn-current-data-g;
+            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
+        }
+        grouping air-interface-historical-performance-type-g {
+            container performance-data {
+                config false;
+                uses air-interface-performance-type-g;
+                description "none";
+            }
+            uses g:otn-history-data-g;
+            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
+        }
+        typedef protection-type {
+            type enumeration {
+                enum hsb {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef role-type {
+            type enumeration {
+                enum working {
+                    description "none";
+                }
+                enum protection {
+                    description "none";
+                }
+                enum protected {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        grouping diversity-type-g {
+            leaf diversity-name {
+                type string;
+                default "Diversity name not defined.";
+                config false;
+                description "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'";
+            }
+            leaf number-of-air-interfaces-max {
+                type int8;
+                units "air interfaces";
+                default 1;
+                config false;
+                description "Maximum number of air interfaces that could be part of this kind of diversity.";
+            }
+            description "none";
+        }
+        typedef air-interface-diversity-status-type {
+            type enumeration {
+                enum group-down {
+                    description "All air interfaces that are members of the diversity configuration are down.";
+                }
+                enum not-all-ai-active {
+                    description "At least one, but not all of the air interfaces that are part of the diversity configuration is not working.";
+                }
+                enum all-ai-active {
+                    description "All air interfaces that are part of the diversity configuration are working.";
+                }
+            }
+            description "none";
+        }
+        grouping air-interface-diversity-problem-severity-type-g {
+            leaf problem-kind-name {
+                type string;
+                default "Problem kind name not defined.";
+                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
+            }
+            leaf problem-kind-severity {
+                type severity-type;
+                default warning;
+                description "Severity of this type of alarm.";
+            }
+            description "none";
+        }
+        grouping air-interface-diversity-current-problem-type-g {
+            leaf problem-name {
+                type string;
+                default "Problem name not specified.";
+                config false;
+                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
+            }
+            uses mw-current-problem-g;
+            description "none";
+        }
+        grouping air-interface-diversity-performance-type-g {
+            leaf snir-min {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Minimum signal to (noise+interference) ratio of the combined signals.";
+            }
+            leaf snir-max {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Maximum signal to (noise+interference) ratio of the combined signals.";
+            }
+            leaf snir-avg {
+                type int8;
+                units "dB";
+                default -99;
+                config false;
+                description "Average signal to (noise+interference) ratio of the combined signals.";
+            }
+            description "Consolidated performance information of the air interface diversity group.";
+        }
+        grouping air-interface-diversity-current-performance-type-g {
+            container performance-data {
+                config false;
+                uses air-interface-diversity-performance-type-g;
+                description "none";
+            }
+            uses g:otn-current-data-g;
+            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
+        }
+        grouping air-interface-diversity-historical-performance-type-g {
+            container performance-data {
+                config false;
+                uses air-interface-diversity-performance-type-g;
+                description "none";
+            }
+            uses g:otn-history-data-g;
+            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
+        }
+        grouping tdm-structure-type-g {
+            leaf tdm-structure-name {
+                type string;
+                default "TDM structure name not defined.";
+                config false;
+                description "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
+            }
+            leaf tdm-segment-size {
+                type int32;
+                units "kbit/s";
+                default -1;
+                config false;
+                description "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
+            }
+            leaf max-number-of-segments-reservable {
+                type int8;
+                units "segments";
+                default -1;
+                config false;
+                description "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface.";
+            }
+            description "none";
+        }
+        grouping structure-problem-severity-type-g {
+            leaf problem-kind-name {
+                type string;
+                default "Problem kind name not defined.";
+                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
+            }
+            leaf problem-kind-severity {
+                type severity-type;
+                default warning;
+                description "Severity of this type of alarm.";
+            }
+            description "none";
+        }
+        grouping structure-current-problem-type-g {
+            leaf problem-name {
+                type string;
+                default "Problem name not specified.";
+                config false;
+                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
+            }
+            uses mw-current-problem-g;
+            description "none";
+        }
+        typedef structure-performance-type {
+            type int32;
+            description "Consolidated performance information of the Structure.";
+        }
+        grouping structure-current-performance-type-g {
+            leaf performance-data {
+                type structure-performance-type;
+                config false;
+                description "none";
+            }
+            uses g:otn-current-data-g;
+            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
+        }
+        grouping structure-historical-performance-type-g {
+            leaf performance-data {
+                type structure-performance-type;
+                config false;
+                description "none";
+            }
+            uses g:otn-history-data-g;
+            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
+        }
+        grouping container-type-g {
+            leaf container-name {
+                type string;
+                default "Container name not yet defined.";
+                config false;
+                description "Names to be chosen from the following list: 'ethernet','e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
+            }
+            leaf number-of-time-slots-required {
+                type int16;
+                units "timeslots";
+                default -1;
+                config false;
+                description "Number of time slots required for transporting this type of container. Value must be calculated by the vendor after defining the timeSlotCapacity. For containers of fixed size: numberOfTimeSlotsRequired = required bandwidth of the container divided by timeSlotCapacity. For containers of variable size the minimum (most probably 1) is to be stated.";
+            }
+            leaf tdm-time-slots-is-required {
+                type boolean;
+                default false;
+                config false;
+                description "Shall be set to '1', if this container type requires bandwidth (times slots) reserved for TDM transport.";
+            }
+            leaf bundling-is-avail {
+                type boolean;
+                default false;
+                config false;
+                description "If it is possible to combine transport resources of several radio links to transport this container type, this attribute shall be set to '1'.";
+            }
+            description "none";
+        }
+        grouping tdm-container-type-g {
+            leaf tdm-container-name {
+                type string;
+                default "TDM container name not defined.";
+                config false;
+                description "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
+            }
+            leaf tdm-container-size {
+                type int32;
+                units "kbit/s";
+                default -1;
+                config false;
+                description "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
+            }
+            description "none";
+        }
+        grouping segment-id-type-g {
+            leaf structure-id-ref {
+                type core-model:universal-id;
+                description "none";
+            }
+            leaf segment-id-ref {
+                type int16;
+                description "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once.";
+            }
+            description "Identifies the segments, which are used to transport the container.";
+        }
+        grouping segment-status-type-g {
+            leaf segment-status-type-id {
+                type int16;
+                config false;
+                description "none";
+            }
+            leaf segment-is-reserved-for-tdm {
+                type boolean;
+                default false;
+                config false;
+                description "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm.
+                    ";
+            }
+            leaf operational-status {
+                type core-model:operational-state;
+                default disabled;
+                config false;
+                description "Current operational status of each segment.";
+            }
+            leaf obsolete-priority-class {
+                type int8;
+                default -1;
+                config false;
+                description "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank.";
+            }
+            leaf obsolete-drop-order-rank {
+                type int16;
+                default -1;
+                config false;
+                description "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. 
+                    _unique: within Structure::StructureStatus::segmentStatusList";
+            }
+            description "none";
+        }
+        grouping container-problem-severity-type-g {
+            leaf problem-kind-name {
+                type string;
+                default "Problem kind name not defined.";
+                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
+            }
+            leaf problem-kind-severity {
+                type severity-type;
+                default warning;
+                description "Severity of this type of alarm.";
+            }
+            description "none";
+        }
+        grouping container-current-problem-type-g {
+            leaf problem-name {
+                type string;
+                default "Problem name not specified.";
+                config false;
+                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
+            }
+            uses mw-current-problem-g;
+            description "none";
+        }
+        grouping container-performance-type-g {
+            leaf tx-ethernet-bytes-max-s {
+                type int32;
+                units "Bytes/s";
+                default -1;
+                config false;
+                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers.";
+            }
+            leaf tx-ethernet-bytes-max-m {
+                type int64;
+                units "Bytes/min";
+                default -1;
+                config false;
+                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers.";
+            }
+            leaf tx-ethernet-bytes-sum {
+                type int64;
+                units "Bytes";
+                default -1;
+                config false;
+                description "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers.";
+            }
+            leaf time-period {
+                type int32;
+                units "s";
+                default -1;
+                config false;
+                description "Total length of the measurement period in seconds.";
+            }
+            description "Consolidated performance information of the Container.";
+        }
+        grouping container-current-performance-type-g {
+            container performance-data {
+                config false;
+                uses container-performance-type-g;
+                description "none";
+            }
+            uses g:otn-current-data-g;
+            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
+        }
+        grouping container-historical-performance-type-g {
+            container performance-data {
+                config false;
+                uses container-performance-type-g;
+                description "none";
+            }
+            uses g:otn-history-data-g;
+            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
+        }
+
+    /***********************
+    * package object-classes
+    **********************/ 
+        /***********************
+        * package air-interface
+        **********************/ 
+            list mw-air-interface-pac {
+                key 'layer-protocol';
+                leaf layer-protocol {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                    }
+                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
+                }
+                container air-interface-capability {
+                    config false;
+                    uses air-interface-capability-g;
+                    description "none";
+                }
+                container air-interface-configuration {
+                    uses air-interface-configuration-g;
+                    description "none";
+                }
+                container air-interface-status {
+                    config false;
+                    uses air-interface-status-g;
+                    description "none";
+                }
+                container air-interface-current-problems {
+                    config false;
+                    uses air-interface-current-problems-g;
+                    description "none";
+                }
+                container air-interface-current-performance {
+                    config false;
+                    uses air-interface-current-performance-g;
+                    description "none";
+                }
+                container air-interface-historical-performances {
+                    config false;
+                    uses air-interface-historical-performances-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping air-interface-capability-g {
+                leaf type-of-equipment {
+                    type string;
+                    default "Type of equipment not yet defined.";
+                    config false;
+                    description "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware.";
+                }
+                leaf tx-frequency-min {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    config false;
+                    description "Value of the minimum transmit frequency tunable at the air interface.";
+                }
+                leaf tx-frequency-max {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    config false;
+                    description "Value of the maximum transmit frequency tunable at the air interface.";
+                }
+                leaf rx-frequency-min {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    config false;
+                    description "Value of the minimum receive frequency tunable at the air interface.";
+                }
+                leaf rx-frequency-max {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    config false;
+                    description "Value of the maximum receive frequency tunable at the air interface.";
+                }
+                leaf adaptive-modulation-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "In case the device is capable of adaptive modulation, this field shall contain a 'true'.";
+                }
+                leaf mimo-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "In case the device is capable of MIMO, this field shall contain a 'true'.";
+                }
+                leaf mimo-channels {
+                    type int8;
+                    units "channels";
+                    default 1;
+                    config false;
+                    description "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration.";
+                }
+                leaf alic-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'.";
+                }
+                leaf atpc-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "In case the microwave radio is capable of ATPC, this field shall contain a 'true'.";
+                }
+                leaf atpc-range {
+                    type int8;
+                    units "dB";
+                    default 0;
+                    config false;
+                    description "Extent of the ATPC range.";
+                }
+                leaf encryption-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Shall be marked 'true', if payload encryption is available.";
+                }
+                leaf-list supported-loop-back-kind-list {
+                    type loop-back-type;
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    description "List of supported kinds of looping back of header information to the remote site.";
+                }
+                leaf maintenance-timer-range {
+                    type string;
+                    units "s";
+                    default "Range of the maintenance timer not yet defined.";
+                    config false;
+                    description "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360').";
+                }
+                leaf supported-alarms {
+                    type string;
+                    default "Supported alarms not yet defined.";
+                    config false;
+                    description "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas.";
+                }
+                list supported-channel-plan-list {
+                    key 'supported-channel-plan';
+                    config false;
+                    min-elements 1;
+                    uses channel-plan-type-g;
+                    description "List of channel spacing that are supported by the device.";
+                }
+                description "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes.";
+            }
+            grouping air-interface-configuration-g {
+                leaf air-interface-name {
+                    type string;
+                    default "Air interface ID not yet defined.";
+                    description "Operator specific microwave link ID (often used for coding area, type of element and sequential number).";
+                }
+                leaf radio-signal-id {
+                    type string;
+                    default "Radio signal ID not yet defined.";
+                    description "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check.";
+                }
+                leaf tx-frequency {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    description "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable.";
+                }
+                leaf rx-frequency {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    description "Center frequency of the receive channel.";
+                }
+                leaf tx-channel-bandwidth {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
+                }
+                leaf rx-channel-bandwidth {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    description "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
+                }
+                leaf polarization {
+                    type polarization-type;
+                    default not-specified;
+                    description "Allows documenting the polarization of the air interface.";
+                }
+                leaf power-is-on {
+                    type boolean;
+                    default true;
+                    description "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'.";
+                }
+                leaf transmitter-is-on {
+                    type boolean;
+                    default false;
+                    description "Activation of the transmitter inside the radio shall be expressed as a 'true'.";
+                }
+                leaf receiver-is-on {
+                    type boolean;
+                    default true;
+                    description "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations.
+                        ";
+                }
+                leaf tx-power {
+                    type int8;
+                    units "dBm";
+                    default 99;
+                    description "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC.";
+                }
+                leaf adaptive-modulation-is-on {
+                    type boolean;
+                    default false;
+                    description "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'.";
+                }
+                leaf modulation-min {
+                    type int16;
+                    units "symbols";
+                    default -1;
+                    description "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
+                }
+                leaf modulation-max {
+                    type int16;
+                    units "symbols";
+                    default -1;
+                    description "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
+                }
+                leaf xpic-is-on {
+                    type boolean;
+                    default false;
+                    description "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'.";
+                }
+                leaf mimo-is-on {
+                    type boolean;
+                    default false;
+                    description "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'.";
+                }
+                leaf alic-is-on {
+                    type boolean;
+                    default false;
+                    description "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'.";
+                }
+                leaf atpc-is-on {
+                    type boolean;
+                    default false;
+                    description "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'.";
+                }
+                leaf atpc-thresh-upper {
+                    type int16;
+                    units "dBm";
+                    default 99;
+                    description "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power.";
+                }
+                leaf atpc-thresh-lower {
+                    type int16;
+                    units "dBm";
+                    default 99;
+                    description "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power.";
+                }
+                leaf auto-freq-select-is-on {
+                    type boolean;
+                    default false;
+                    description "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'.";
+                }
+                leaf auto-freq-select-range {
+                    type int8;
+                    units "channels";
+                    default -1;
+                    description "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen. ";
+                }
+                leaf modulation-is-on {
+                    type boolean;
+                    default true;
+                    description "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'.";
+                }
+                leaf encryption-is-on {
+                    type boolean;
+                    default false;
+                    description "Activates encryption of the payload.";
+                }
+                leaf cryptographic-key {
+                    type string;
+                    default "Cryptographic key not yet defined.";
+                    description "Key for transforming plaintext into ciphertext data.";
+                }
+                leaf loop-back-kind-on {
+                    type loop-back-type;
+                    default none;
+                    description "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
+                }
+                leaf maintenance-timer {
+                    type int32;
+                    units "s";
+                    default -1;
+                    description "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange.";
+                }
+                list problem-kind-severity-list {
+                    key 'problem-kind-name';
+                    min-elements 6;
+                    uses air-interface-problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                description "Configuration of the radio link.";
+            }
+            grouping air-interface-status-g {
+                leaf tx-frequency-cur {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    config false;
+                    description "Center frequency of the currently operated transmit channel.";
+                }
+                leaf rx-frequency-cur {
+                    type int32;
+                    units "kHz";
+                    default -1;
+                    config false;
+                    description "Center frequency of the currently operated receive channel.";
+                }
+                leaf tx-level-cur {
+                    type int8;
+                    units "dBm";
+                    default 99;
+                    config false;
+                    description "Current transmit level.";
+                }
+                leaf rx-level-cur {
+                    type int8;
+                    units "dBm";
+                    default 99;
+                    config false;
+                    description "Current receive level.";
+                }
+                leaf modulation-cur {
+                    type int16;
+                    units "symbols";
+                    default -1;
+                    config false;
+                    description "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
+                }
+                leaf code-rate-cur {
+                    type int8;
+                    units "%";
+                    default -1;
+                    config false;
+                    description "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate).";
+                }
+                leaf snir-cur {
+                    type int8;
+                    units "dB";
+                    default -99;
+                    config false;
+                    description "Currently measured signal to (noise+interference) ratio.";
+                }
+                leaf xpd-cur {
+                    type int8;
+                    units "dB";
+                    default -99;
+                    config false;
+                    description "Currently measured cross polarization discrimination.";
+                }
+                leaf rf-temp-cur {
+                    type int8;
+                    units "Celsius";
+                    default -99;
+                    config false;
+                    description "Current temperature (in degree Celsius) of the radio module inside the outdoor unit.";
+                }
+                leaf last-status-change {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time the Air Interface entered its current operational status.  ";
+                }
+                leaf radio-power-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If the radio unit has power and is switched on, this shall be expressed as a 'true'.";
+                }
+                leaf link-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'.";
+                }
+                leaf xpic-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'.";
+                }
+                leaf mimo-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'.";
+                }
+                leaf alic-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'.";
+                }
+                leaf atpc-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'.";
+                }
+                leaf auto-freq-select-is-up {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'.";
+                }
+                leaf loop-back-kind-up {
+                    type loop-back-type;
+                    default none;
+                    config false;
+                    description "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
+                }
+                leaf local-end-point-id {
+                    type string;
+                    default "not-supported";
+                    config false;
+                    description "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link.";
+                }
+                leaf remote-end-point-id {
+                    type string;
+                    default "not-supported";
+                    config false;
+                    description "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link.";
+                }
+                description "Measurements of current values on the air interface and operational status of the device.";
+            }
+            grouping air-interface-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses air-interface-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping air-interface-current-performance-g {
+                list current-performance-data-list {
+                    key 'scanner-id';
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    uses air-interface-current-performance-type-g;
+                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
+                }
+                description "Aggregated performance information of the air interface at a particular moment.";
+            }
+            grouping air-interface-historical-performances-g {
+                list historical-performance-data-list {
+                    key 'history-data-id';
+                    config false;
+                    uses air-interface-historical-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the air interface for a pre-defined measurement interval.";
+            }
+            list co-channel-group {
+                key 'co-channel-group-id';
+                uses co-channel-group-g;
+                description "none";
+            }
+            grouping co-channel-group-g {
+                leaf co-channel-group-id {
+                    type core-model:universal-id;
+                    description "none";
+                }
+                leaf-list air-interface-list {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
+                    }
+                    description "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group.";
+                }
+                leaf sort-of-co-channel-group {
+                    type string;
+                    default "Kind of co-channel group not specified.";
+                    description "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';";
+                }
+                leaf-list logical-termination-point {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
+                    }
+                    description "none";
+                }
+                description "Required for configuring XPIC, MIMO and ALIC.";
+            }
+
+        /***********************
+        * package air-interface-hsb
+        **********************/ 
+            list mw-air-interface-hsb-end-point-pac {
+                key 'endpoint';
+                leaf role {
+                    type role-type;
+                    default working;
+                    description "none";
+                }
+                leaf endpoint {
+                    type leafref {
+                        path '/core-model:forwarding-construct/core-model:fc-port/core-model:uuid';
+                    }
+                    description "none";
+                }
+                description "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC.  The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.";
+            }
+            list mw-air-interface-hsb-fc-switch-pac {
+                key 'fcswitch';
+                leaf prot-type {
+                    type protection-type;
+                    default hsb;
+                    description "Indicates the protection scheme that is used for the ProtectionGroup.";
+                }
+                leaf air-interface-hsb-configuration-is-faulty-severity {
+                    type severity-type;
+                    default warning;
+                    description "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration.";
+                }
+                leaf air-interface-hsb-is-partly-down-severity {
+                    type severity-type;
+                    default warning;
+                    description "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration.";
+                }
+                leaf air-interface-hsb-is-down-severity {
+                    type severity-type;
+                    default warning;
+                    description "The level of severity of the total HSB configuration being down shall be chosen from an enumeration.";
+                }
+                leaf fcswitch {
+                    type leafref {
+                        path '/core-model:forwarding-construct/core-model:fc-switch/core-model:uuid';
+                    }
+                    description "none";
+                }
+                description "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as  1+1 ane 1:1).  May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state.";
+            }
+
+        /***********************
+        * package air-interface-diversity
+        **********************/ 
+            list mw-air-interface-diversity-pac {
+                key 'layer-protocol';
+                leaf layer-protocol {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                    }
+                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
+                }
+                container air-interface-diversity-capability {
+                    config false;
+                    uses air-interface-diversity-capability-g;
+                    description "none";
+                }
+                container air-interface-diversity-configuration {
+                    uses air-interface-diversity-configuration-g;
+                    description "none";
+                }
+                container air-interface-diversity-status {
+                    config false;
+                    uses air-interface-diversity-status-g;
+                    description "none";
+                }
+                container air-interface-diversity-current-problems {
+                    config false;
+                    uses air-interface-diversity-current-problems-g;
+                    description "none";
+                }
+                container air-interface-diversity-current-performance {
+                    config false;
+                    uses air-interface-diversity-current-performance-g;
+                    description "none";
+                }
+                container air-interface-diversity-historical-performances {
+                    config false;
+                    uses air-interface-diversity-historical-performances-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping air-interface-diversity-capability-g {
+                list available-kinds-of-diversity {
+                    key 'diversity-name';
+                    config false;
+                    uses diversity-type-g;
+                    description "Available types of diversity to be listed.";
+                }
+                leaf supported-alarms {
+                    type string;
+                    default "Supported alarms not yet defined.";
+                    config false;
+                    description "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas.";
+                }
+                description "Describes the capabilities in implementing different types of air interface diversity.";
+            }
+            grouping air-interface-diversity-configuration-g {
+                container air-interface-diversity {
+                    uses diversity-type-g;
+                    description "Type of air interface diversity configured at the link.";
+                }
+                leaf-list air-interface-ltp-list {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
+                    }
+                    min-elements 2;
+                    description "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax";
+                }
+                list problem-kind-severity-list {
+                    key 'problem-kind-name';
+                    min-elements 3;
+                    uses air-interface-diversity-problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                description "none";
+            }
+            grouping air-interface-diversity-status-g {
+                leaf snir-cur {
+                    type int8;
+                    units "dB";
+                    default -99;
+                    config false;
+                    description "Currently measured signal to (noise+interference) ratio of the combined signals.";
+                }
+                leaf air-interface-diversity-status {
+                    type air-interface-diversity-status-type;
+                    default group-down;
+                    config false;
+                    description "Status of the air interface bundle. ";
+                }
+                leaf last-status-change {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time the Diversity Group entered its current operational status.  ";
+                }
+                description "none";
+            }
+            grouping air-interface-diversity-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses air-interface-diversity-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping air-interface-diversity-current-performance-g {
+                list current-performance-data-list {
+                    key 'scanner-id';
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    uses air-interface-diversity-current-performance-type-g;
+                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
+                }
+                description "Aggregated performance information of the air interface diversity configuration at a particular moment.";
+            }
+            grouping air-interface-diversity-historical-performances-g {
+                list historical-performance-data-list {
+                    key 'history-data-id';
+                    config false;
+                    uses air-interface-diversity-historical-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval.";
+            }
+
+        /***********************
+        * package pure-ethernet-structure
+        **********************/ 
+            list mw-pure-ethernet-structure-pac {
+                if-feature pure-ethernet;
+                key 'layer-protocol';
+                leaf layer-protocol {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                    }
+                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
+                }
+                container pure-ethernet-structure-capability {
+                    config false;
+                    uses pure-ethernet-structure-capability-g;
+                    description "none";
+                }
+                container pure-ethernet-structure-configuration {
+                    uses pure-ethernet-structure-configuration-g;
+                    description "none";
+                }
+                container pure-ethernet-structure-status {
+                    config false;
+                    uses pure-ethernet-structure-status-g;
+                    description "none";
+                }
+                container pure-ethernet-structure-current-problems {
+                    config false;
+                    uses pure-ethernet-structure-current-problems-g;
+                    description "none";
+                }
+                container pure-ethernet-structure-current-performance {
+                    config false;
+                    uses pure-ethernet-structure-current-performance-g;
+                    description "none";
+                }
+                container pure-ethernet-structure-historical-performances {
+                    config false;
+                    uses pure-ethernet-structure-historical-performances-g;
+                    description "none";
+                }
+                description "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only.";
+            }
+            grouping pure-ethernet-structure-capability-g {
+                leaf structure-id {
+                    type core-model:universal-id;
+                    config false;
+                    description "Identifies the Structure for bundling and container.";
+                }
+                leaf supported-alarms {
+                    type string;
+                    default "Supported alarms not yet defined.";
+                    config false;
+                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
+                }
+                description "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device. Segmentation is not available. No fixed segment size. No TDM transport.";
+            }
+            grouping pure-ethernet-structure-configuration-g {
+                list problem-kind-severity-list {
+                    key 'problem-kind-name';
+                    uses structure-problem-severity-type-g;
+                    description "Severity of the type of problem to be configured.";
+                }
+                description "none";
+            }
+            grouping pure-ethernet-structure-status-g {
+                container segment-status-list {
+                    config false;
+                    uses segment-status-type-g;
+                    description "Status of the Ethernet transport segment. Always just one segment.";
+                }
+                leaf last-status-change {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time and date of the last update of the status information.  ";
+                }
+                description "none";
+            }
+            grouping pure-ethernet-structure-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses structure-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping pure-ethernet-structure-current-performance-g {
+                list current-performance-data-list {
+                    key 'scanner-id';
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    uses structure-current-performance-type-g;
+                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
+                }
+                description "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment.";
+            }
+            grouping pure-ethernet-structure-historical-performances-g {
+                list historical-performance-data-list {
+                    key 'history-data-id';
+                    config false;
+                    uses structure-historical-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval.";
+            }
+            feature pure-ethernet {
+                description "Feature 'pure-ethernet' is mandatory for device types transporting pure Ethernet.";
+            }
+
+        /***********************
+        * package hybrid-mw-structure
+        **********************/ 
+            list mw-hybrid-mw-structure-pac {
+                if-feature hybrid-microwave;
+                key 'layer-protocol';
+                leaf layer-protocol {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                    }
+                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
+                }
+                container hybrid-mw-structure-capability {
+                    config false;
+                    uses hybrid-mw-structure-capability-g;
+                    description "none";
+                }
+                container hybrid-mw-structure-configuration {
+                    uses hybrid-mw-structure-configuration-g;
+                    description "none";
+                }
+                container hybrid-mw-structure-status {
+                    config false;
+                    uses hybrid-mw-structure-status-g;
+                    description "none";
+                }
+                container hybrid-mw-structure-current-problems {
+                    config false;
+                    uses hybrid-mw-structure-current-problems-g;
+                    description "none";
+                }
+                container hybrid-mw-structure-current-performance {
+                    config false;
+                    uses hybrid-mw-structure-current-performance-g;
+                    description "none";
+                }
+                container hybrid-mw-structure-historical-performances {
+                    config false;
+                    uses hybrid-mw-structure-historical-performances-g;
+                    description "none";
+                }
+                description "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic.";
+            }
+            grouping hybrid-mw-structure-capability-g {
+                leaf structure-id {
+                    type core-model:universal-id;
+                    config false;
+                    description "Identifies the Structure for bundling and container.";
+                }
+                list supported-tdm-structure-types-list {
+                    key 'tdm-structure-name';
+                    config false;
+                    min-elements 1;
+                    uses tdm-structure-type-g;
+                    description "Lists the TDM frame types that are supported.";
+                }
+                leaf supported-alarms {
+                    type string;
+                    default "Supported alarms not yet defined.";
+                    config false;
+                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
+                }
+                description "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet). Segmentation is available. TDM transport is available.";
+            }
+            grouping hybrid-mw-structure-configuration-g {
+                container structure-type {
+                    uses tdm-structure-type-g;
+                    description "TDM frame to be applied.";
+                }
+                leaf number-of-tdm-segments-to-be-reserved {
+                    type int16;
+                    default -1;
+                    description "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType";
+                }
+                list problem-kind-severity-list {
+                    key 'problem-kind-name';
+                    uses structure-problem-severity-type-g;
+                    description "Severity of the type of problem to be configured.";
+                }
+                description "none";
+            }
+            grouping hybrid-mw-structure-status-g {
+                list segment-status-list {
+                    key 'segment-status-type-id';
+                    config false;
+                    uses segment-status-type-g;
+                    description "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1";
+                }
+                leaf last-status-change {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time and date of the last update of the status information.  ";
+                }
+                description "none";
+            }
+            grouping hybrid-mw-structure-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses structure-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping hybrid-mw-structure-current-performance-g {
+                list current-performance-data-list {
+                    key 'scanner-id';
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    uses structure-current-performance-type-g;
+                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
+                }
+                description "Aggregated performance information of the structure of a hybrid microwave at a particular moment.";
+            }
+            grouping hybrid-mw-structure-historical-performances-g {
+                list historical-performance-data-list {
+                    key 'history-data-id';
+                    config false;
+                    uses structure-historical-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval.";
+            }
+            feature hybrid-microwave {
+                description "Feature 'hybrid-microwave' is mandatory for device types transporting Ethernet + TDM.";
+            }
+
+        /***********************
+        * package ethernet-container
+        **********************/ 
+            list mw-ethernet-container-pac {
+                key 'layer-protocol';
+                leaf layer-protocol {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                    }
+                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
+                }
+                container ethernet-container-capability {
+                    config false;
+                    uses ethernet-container-capability-g;
+                    description "none";
+                }
+                container ethernet-container-configuration {
+                    uses ethernet-container-configuration-g;
+                    description "none";
+                }
+                container ethernet-container-status {
+                    config false;
+                    uses ethernet-container-status-g;
+                    description "none";
+                }
+                container ethernet-container-current-problems {
+                    config false;
+                    uses ethernet-container-current-problems-g;
+                    description "none";
+                }
+                container ethernet-container-current-performance {
+                    config false;
+                    uses ethernet-container-current-performance-g;
+                    description "none";
+                }
+                container ethernet-container-historical-performances {
+                    config false;
+                    uses ethernet-container-historical-performances-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping ethernet-container-capability-g {
+                leaf bundling-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container.";
+                }
+                leaf packet-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans.";
+                }
+                leaf layer2-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on layer 2 available at the device.";
+                }
+                leaf vlan-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on VLAN layer available at the device.";
+                }
+                leaf q-in-q-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on layer of a second VLAN available at the device.";
+                }
+                leaf mpls-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on mpls layer available at the device.";
+                }
+                leaf ipv4-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on layer 3 for IPv4 available at the device.";
+                }
+                leaf ipv6-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on layer 3 for IPv6 available at the device.";
+                }
+                leaf layer4-compression-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Packet compression on layer 4 (TCP and UDP header) available at the device.";
+                }
+                leaf encryption-is-avail {
+                    type boolean;
+                    default false;
+                    config false;
+                    description "Shall be marked 'true', if Ethernet payload encryption is available.";
+                }
+                leaf supported-alarms {
+                    type string;
+                    default "Supported alarms not yet defined.";
+                    config false;
+                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
+                }
+                description "none";
+            }
+            grouping ethernet-container-configuration-g {
+                leaf container-id {
+                    type string;
+                    default "No Ethernet Flow associated yet.";
+                    description "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller.";
+                }
+                list segments-id-list {
+                    key 'structure-id-ref segment-id-ref';
+                    min-elements 1;
+                    uses segment-id-type-g;
+                    description "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list.";
+                }
+                leaf packet-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum.";
+                }
+                leaf layer2-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on layer 2 configured at the device.";
+                }
+                leaf vlan-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on VLAN layer configured at the device.";
+                }
+                leaf q-in-q-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on layer of a second VLAN configured at the device.";
+                }
+                leaf mpls-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on MPLS layer configured at the device.";
+                }
+                leaf ipv4-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on layer 3 for IPv4 configured at the device.";
+                }
+                leaf ipv6-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on layer 3 for IPv6 configured at the device.";
+                }
+                leaf layer4-compression-is-on {
+                    type boolean;
+                    default false;
+                    description "Packet compression on layer 4 (TCP and UDP header) configured at the device.";
+                }
+                leaf encryption-is-on {
+                    type boolean;
+                    default false;
+                    description "Activates encryption of the Ethernet payload.";
+                }
+                leaf cryptographic-key {
+                    type string;
+                    default "Cryptographic key not yet defined.";
+                    description "Key for transforming plaintext into cipher text data.";
+                }
+                list problem-kind-severity-list {
+                    key 'problem-kind-name';
+                    min-elements 2;
+                    uses container-problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                description "none";
+            }
+            grouping ethernet-container-status-g {
+                leaf last-status-change {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time the Container entered its current operational status.  ";
+                }
+                description "none";
+            }
+            grouping ethernet-container-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses container-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping ethernet-container-current-performance-g {
+                list current-performance-data-list {
+                    key 'scanner-id';
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    uses container-current-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the Ethernet container at a particular moment.";
+            }
+            grouping ethernet-container-historical-performances-g {
+                list historical-performance-data-list {
+                    key 'history-data-id';
+                    config false;
+                    uses container-historical-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the Ethernet container for a pre-defined measurement interval.";
+            }
+
+        /***********************
+        * package tdm-container
+        **********************/ 
+            list mw-tdm-container-pac {
+                if-feature hybrid-microwave;
+                key 'layer-protocol';
+                leaf layer-protocol {
+                    type leafref {
+                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                    }
+                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
+                }
+                container tdm-container-capability {
+                    config false;
+                    uses tdm-container-capability-g;
+                    description "none";
+                }
+                container tdm-container-configuration {
+                    uses tdm-container-configuration-g;
+                    description "none";
+                }
+                container tdm-container-status {
+                    config false;
+                    uses tdm-container-status-g;
+                    description "none";
+                }
+                container tdm-container-current-problems {
+                    config false;
+                    uses tdm-container-current-problems-g;
+                    description "none";
+                }
+                container tdm-container-current-performance {
+                    config false;
+                    uses tdm-container-current-performance-g;
+                    description "none";
+                }
+                container tdm-container-historical-performances {
+                    config false;
+                    uses tdm-container-historical-performances-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping tdm-container-capability-g {
+                list supported-tdm-container-types-list {
+                    key 'tdm-container-name';
+                    config false;
+                    min-elements 1;
+                    uses tdm-container-type-g;
+                    description "Lists the TDM containers that are supported.";
+                }
+                leaf supported-alarms {
+                    type string;
+                    default "Supported alarms not yet defined.";
+                    config false;
+                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
+                }
+                description "Bundling is not available.";
+            }
+            grouping tdm-container-configuration-g {
+                leaf container-id {
+                    type string;
+                    default "No TDM Flow associated yet.";
+                    description "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller.";
+                }
+                container container-type {
+                    uses tdm-container-type-g;
+                    description "Type of TDM container.";
+                }
+                container segment-id {
+                    uses segment-id-type-g;
+                    description "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;";
+                }
+                list problem-kind-severity-list {
+                    key 'problem-kind-name';
+                    min-elements 2;
+                    uses container-problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                description "none";
+            }
+            grouping tdm-container-status-g {
+                leaf last-status-change {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time the Container entered its current operational status.  ";
+                }
+                description "none";
+            }
+            grouping tdm-container-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses container-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping tdm-container-current-performance-g {
+                list current-performance-data-list {
+                    key 'scanner-id';
+                    config false;
+                    min-elements 1;
+                    max-elements 2;
+                    uses container-current-performance-type-g;
+                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
+                }
+                description "Aggregated performance information of the TDM container at a particular moment.";
+            }
+            grouping tdm-container-historical-performances-g {
+                list historical-performance-data-list {
+                    key 'history-data-id';
+                    config false;
+                    uses container-historical-performance-type-g;
+                    description "none";
+                }
+                description "Aggregated performance information of the TDM container for a pre-defined measurement interval.";
+            }
+
+        /***********************
+        * package super-classes
+        **********************/ 
+            grouping mw-current-problem-g {
+                leaf sequence-number {
+                    type int32;
+                    config false;
+                    description "Unique sequence number of the current problem object.";
+                }
+                leaf time-stamp {
+                    type yang:date-and-time;
+                    default "2017-01-01T00:00:00.0Z";
+                    config false;
+                    description "Time and date of the problem.  ";
+                }
+                leaf problem-severity {
+                    type severity-type;
+                    default warning;
+                    config false;
+                    description "Severity of the alarm.";
+                }
+                description "none";
+            }
+
+
+    /***********************
+    * package notifications
+    **********************/ 
+        notification object-creation-notification {
+            uses object-creation-notification-g;
+            description "none";
+        }
+        grouping object-creation-notification-g {
+            leaf counter {
+                type int32;
+                default -1;
+                description "Counts object creation notifications.";
+            }
+            leaf time-stamp {
+                type yang:date-and-time;
+                default "2017-01-01T00:00:00.0Z";
+                description "none";
+            }
+            leaf object-id-ref {
+                type core-model:universal-id;
+                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
+            }
+            leaf object-type {
+                type string;
+                default "Type of created object not specified.";
+                description "Type of Object to be chosen from the following list of values: 'MW_AirInterface_Pac', 'MW_AirInterfaceDiversity_Pac', 'MW_Structure_Pac', 'MW_PureEthernetStructure_Pac', 'MW_HybridMwStructure_Pac', 'MW_Container_Pac', 'MW_EthernetContainer_Pac' or 'MW_TdmContainer_Pac'.";
+            }
+            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac has to be instancieted in the controller.";
+        }
+        notification object-deletion-notification {
+            uses object-deletion-notification-g;
+            description "none";
+        }
+        grouping object-deletion-notification-g {
+            leaf counter {
+                type int32;
+                default -1;
+                description "Counts object deletion notifications.";
+            }
+            leaf time-stamp {
+                type yang:date-and-time;
+                default "2017-01-01T00:00:00.0Z";
+                description "none";
+            }
+            leaf object-id-ref {
+                type core-model:universal-id;
+                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
+            }
+            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac instance has to be deleted in the controller.";
+        }
+        notification attribute-value-changed-notification {
+            uses attribute-value-changed-notification-g;
+            description "none";
+        }
+        grouping attribute-value-changed-notification-g {
+            leaf counter {
+                type int32;
+                default -1;
+                description "Counts attribute value changed notifications.";
+            }
+            leaf time-stamp {
+                type yang:date-and-time;
+                default "2017-01-01T00:00:00.0Z";
+                description "none";
+            }
+            leaf object-id-ref {
+                type core-model:universal-id;
+                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
+            }
+            leaf attribute-name {
+                type string;
+                default "Attribute name not specified.";
+                description "Name of the attribute that has been changed.";
+            }
+            leaf new-value {
+                type string;
+                default "New value not specified.";
+                description "Attribute value converted to a string (xml, json, ...)";
+            }
+            description "To be sent when an attribute has changed and one or more controllers have to update their data.";
+        }
+        notification problem-notification {
+            uses problem-notification-g;
+            description "none";
+        }
+        grouping problem-notification-g {
+            leaf counter {
+                type int32;
+                default -1;
+                description "Counts problem notifications";
+            }
+            leaf time-stamp {
+                type yang:date-and-time;
+                default "2017-01-01T00:00:00.0Z";
+                description "none";
+            }
+            leaf object-id-ref {
+                type core-model:universal-id;
+                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
+            }
+            leaf problem {
+                type string;
+                default "Problem name not specified.";
+                description "Name of the problem according to AirInterface::AirInterfaceCapability::supportedAlarms or AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms or Structure::StructureCapability::supportedAlarms or PureEthernetStructure::PureEthernetStructureCapability::supportedAlarms or HybridMwStructure::HybridMwStructureCapability::supportedAlarms or Container::ContainerCapability::supportedAlarms or EthernetContainer::EthernetContainerCapability::supportedAlarms or TdmContainer::TdmContainerCapability::supportedAlarms.";
+            }
+            leaf severity {
+                type severity-type;
+                default warning;
+                description "Severity of the problem according to AirInterface::AirInterfaceConfiguration::problemSeverityList, AirInterfaceDiversity::AirInterfaceDiversityConfiguration::problemSeverityList, Structure::StructureConfiguration::problemSeverityList, PureEthernetStructure::PureEthernetStructureConfiguration::problemSeverityList, HybridMwStructure::HybridMwStructureConfiguration::problemSeverityList, Container::ContainerConfiguration::problemSeverityList, EthernetContainer::EthernetContainerConfiguration::problemSeverityList or TdmContainer::TdmContainerConfiguration::problemSeverityList";
+            }
+            description "To be sent when a problem occurs at a MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
+        }
+
+}
diff --git a/sdnr/model/yang/nc-notifications@2008-07-14.yang b/sdnr/model/yang/nc-notifications@2008-07-14.yang
new file mode 100644
index 0000000..9ef5ed0
--- /dev/null
+++ b/sdnr/model/yang/nc-notifications@2008-07-14.yang
@@ -0,0 +1,95 @@
+module nc-notifications {
+
+    namespace "urn:ietf:params:xml:ns:netmod:notification";
+    prefix "manageEvent";
+
+    import ietf-yang-types{ prefix yang; }
+    import notifications { prefix ncEvent; }
+
+    organization
+      "IETF NETCONF WG";
+
+    contact
+      "netconf@ietf.org";
+
+    description
+      "Conversion of the 'manageEvent' XSD in the NETCONF
+       Notifications RFC.";
+
+    reference
+      "RFC 5277";
+
+    revision 2008-07-14 {
+      description "RFC 5277 version.";
+    }
+
+    container netconf {
+      description "Top-level element in the notification namespace";
+
+      config false;
+
+      container streams {
+        description 
+          "The list of event streams supported by the system. When
+           a query is issued, the returned set of streams is 
+           determined based on user privileges.";
+
+        list stream {
+          description 
+            "Stream name, description and other information.";
+          key name;
+          min-elements 1;
+
+          leaf name {
+            description
+              "The name of the event stream. If this is the default
+               NETCONF stream, this must have the value 'NETCONF'.";
+            type ncEvent:streamNameType;
+          }
+
+          leaf description {
+            description
+              "A description of the event stream, including such
+               information as the type of events that are sent over
+               this stream.";
+            type string;
+            mandatory true;
+          }
+
+          leaf replaySupport {
+            description
+              "A description of the event stream, including such
+               information as the type of events that are sent over
+               this stream.";
+            type boolean;
+            mandatory true;
+          }
+
+          leaf replayLogCreationTime {
+            description
+              "The timestamp of the creation of the log used to support
+               the replay function on this stream. Note that this might
+               be earlier then the earliest available notification in
+               the log. This object is updated if the log resets for 
+               some reason.  This object MUST be present if replay is
+               supported.";
+            type yang:date-and-time;   // xsd:dateTime is wrong!
+          }
+        }
+      }
+    }
+
+    notification replayComplete {
+      description
+        "This notification is sent to signal the end of a replay
+         portion of a subscription.";
+    }
+
+    notification notificationComplete {
+      description
+        "This notification is sent to signal the end of a notification
+         subscription. It is sent in the case that stopTime was
+         specified during the creation of the subscription..";
+    }
+
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/notifications@2008-07-14.yang b/sdnr/model/yang/notifications@2008-07-14.yang
new file mode 100644
index 0000000..1d06711
--- /dev/null
+++ b/sdnr/model/yang/notifications@2008-07-14.yang
@@ -0,0 +1,82 @@
+module notifications {
+
+    namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
+    prefix "ncEvent";
+
+    import ietf-yang-types { prefix yang; revision-date "2013-07-15";}
+
+    organization
+      "IETF NETCONF WG";
+
+    contact
+      "netconf@ops.ietf.org";
+
+    description
+      "Conversion of the 'ncEvent' XSD in the
+       NETCONF Notifications RFC.";
+
+    reference
+      "RFC 5277.";
+
+    revision 2008-07-14 {
+      description "RFC 5277 version.";
+    }
+
+    typedef streamNameType {
+      description
+        "The name of an event stream.";
+      type string;
+    }
+
+    rpc create-subscription {
+      description
+        "The command to create a notification subscription. It
+         takes as argument the name of the notification stream
+         and filter. Both of those options limit the content of
+         the subscription. In addition, there are two time-related
+         parameters, startTime and stopTime, which can be used to
+         select the time interval of interest to the notification
+         replay feature.";
+
+      input {
+        leaf stream {
+          description
+            "An optional parameter that indicates which stream of events
+             is of interest. If not present, then events in the default
+             NETCONF stream will be sent.";
+          type streamNameType;
+          default "NETCONF";
+        }
+
+        anyxml filter {
+          description
+            "An optional parameter that indicates which subset of all
+             possible events is of interest. The format of this
+             parameter is the same as that of the filter parameter
+             in the NETCONF protocol operations. If not present,
+             all events not precluded by other parameters will
+             be sent.";
+        }
+
+        leaf startTime {
+          description
+            "A parameter used to trigger the replay feature and
+             indicates that the replay should start at the time
+             specified. If start time is not present, this is not a
+             replay subscription.";
+          type yang:date-and-time;
+        }
+
+        leaf stopTime {
+          // must ". >= ../startTime";
+          description
+            "An optional parameter used with the optional replay
+             feature to indicate the newest notifications of
+             interest. If stop time is not present, the notifications
+             will continue until the subscription is terminated.
+             Must be used with startTime.";
+          type yang:date-and-time;
+        }
+      }
+    }
+}
\ No newline at end of file
diff --git a/sdnr/model/yang/notifications@2018-05-30.yang b/sdnr/model/yang/notifications@2018-05-30.yang
new file mode 100644
index 0000000..296577d
--- /dev/null
+++ b/sdnr/model/yang/notifications@2018-05-30.yang
@@ -0,0 +1,97 @@
+module notifications {
+  yang-version 1;
+  namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
+  prefix ncEvent;
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  organization
+    "IETF NETCONF WG";
+  contact
+    "netconf@ops.ietf.org";
+  description
+    "Conversion of the 'ncEvent' XSD in the
+     NETCONF Notifications RFC.";
+  reference "RFC 5277.";
+
+  revision 2018-05-30 {
+    description
+      "First step to a common notification yang.";
+    reference
+      "RFC 5277: NETCONF Event Notifications";
+  }
+  revision 2008-07-14 {
+    description
+      "Initial version";
+    reference
+      "RFC 5277: NETCONF Event Notifications";
+  }
+
+  typedef streamNameType {
+    type string;
+    description
+      "The name of an event stream.";
+  }
+
+  rpc create-subscription {
+    description
+      "The command to create a notification subscription. It
+       takes as argument the name of the notification stream
+       and filter. Both of those options limit the content of
+       the subscription. In addition, there are two time-related
+       parameters, startTime and stopTime, which can be used to
+       select the time interval of interest to the notification
+       replay feature.";
+    input {
+      leaf stream {
+        type streamNameType;
+        default "NETCONF";
+        description
+          "An optional parameter that indicates which stream of events
+           is of interest. If not present, then events in the default
+           NETCONF stream will be sent.";
+      }
+      anyxml filter {
+        description
+          "An optional parameter that indicates which subset of all
+           possible events is of interest. The format of this
+           parameter is the same as that of the filter parameter
+           in the NETCONF protocol operations. If not present,
+           all events not precluded by other parameters will
+           be sent.";
+      }
+      leaf startTime {
+        type yang:date-and-time;
+        description
+          "A parameter used to trigger the replay feature and
+           indicates that the replay should start at the time
+           specified. If start time is not present, this is not a
+           replay subscription.";
+      }
+      leaf stopTime {
+        type yang:date-and-time;
+        description
+          "An optional parameter used with the optional replay
+           feature to indicate the newest notifications of
+           interest. If stop time is not present, the notifications
+           will continue until the subscription is terminated.
+           Must be used with startTime.";
+      }
+    }
+  }
+  container notification {
+    config false;
+    description
+      "internal struct to start a notification";
+    leaf eventTime {
+      type yang:date-and-time;
+      mandatory true;
+        description
+          "The time the event was generated by the event source. This
+           parameter is of type dateTime and compliant to [RFC3339].
+           Implementations must support time zones.";
+    }
+  }
+}
diff --git a/sdnr/model/yang/onf-core-model-conditional-packages@2017-04-02.yang b/sdnr/model/yang/onf-core-model-conditional-packages@2017-04-02.yang
new file mode 100644
index 0000000..44c99b1
--- /dev/null
+++ b/sdnr/model/yang/onf-core-model-conditional-packages@2017-04-02.yang
@@ -0,0 +1,350 @@
+module onf-core-model-conditional-packages {
+    namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
+    prefix onf-core-model-conditional-packages;
+    import core-model {
+        prefix core-model;
+    }
+    import microwave-model {
+        prefix microwave-model;
+    }
+    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG List:  <mailto:wireless-transport@login.opennetworking.org>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             WG Chair: Giorgio Cazzaniga
+                       <mailto:giorgio.cazzaniga@sm-optics.com>
+             Editors:  Thorsten Heinze
+                       <mailto:thorsten.heinze@telefonica.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
+    revision 2017-04-02 {
+        description "Initial version";
+        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
+    }
+    /***********************
+    * package type-definitions
+    **********************/ 
+        grouping current-problem-type-g {
+            leaf problem-name {
+                type string;
+                default "not-specified";
+                config false;
+                description "Name of the alarm according capability::supportedAlarms.";
+            }
+            uses microwave-model:mw-current-problem-g;
+            description "none";
+        }
+        grouping network-element-current-problem-type-g {
+            leaf problem-name {
+                type string;
+                default "not-specified";
+                config false;
+                description "Name of the alarm according capability::supportedAlarms.";
+            }
+            leaf object-reference {
+                type string;
+                config false;
+                description "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
+            }
+            uses microwave-model:mw-current-problem-g;
+            description "none";
+        }
+        grouping problem-severity-type-g {
+            leaf problem-type-name {
+                type string;
+                description "Name of the alarm according to Capability::supportedAlarms";
+            }
+            leaf problem-type-severity {
+                type microwave-model:severity-type;
+                description "Severity of this type of alarm.";
+            }
+            description "none";
+        }
+        typedef processing-type {
+            type enumeration {
+                enum done {
+                    description "none";
+                }
+                enum processing {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+
+    /***********************
+    * package object-classes
+    **********************/ 
+        /***********************
+        * package network-element
+        **********************/ 
+            container network-element-pac {
+                leaf network-element {
+                    type leafref {
+                        path '/core-model:network-element/core-model:uuid';
+                    }
+                    description "none";
+                }
+                container network-element-capability {
+                    config false;
+                    uses network-element-capability-g;
+                    description "none";
+                }
+                container network-element-configuration {
+                    uses network-element-configuration-g;
+                    description "none";
+                }
+                container network-element-status {
+                    config false;
+                    uses network-element-status-g;
+                    description "none";
+                }
+                container network-element-current-problems {
+                    config false;
+                    uses network-element-current-problems-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping network-element-capability-g {
+                leaf-list supported-alarms {
+                    type string;
+                    config false;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping network-element-configuration-g {
+                list problem-type-severity-list {
+                    key 'problem-type-name';
+                    uses problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                leaf trigger-refresh {
+                    type boolean;
+                    description "A trigger to instruct the netconf server to refresh its internal database/cache. 
+                                 It is primary used for alarms status, but could be used for anything else too. 
+                                 It is assumed that the refresh mechanism takes some time. 
+                                 In order to indicate the process to the controller a refreshStatus attribute is used.";
+                }
+                description "none";
+            }
+            grouping network-element-status-g {
+                leaf refresh-status {
+                    type processing-type;
+                    config false;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping network-element-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses network-element-current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+
+        /***********************
+        * package equipment
+        **********************/ 
+            list equipment-pac {
+                key 'equipment';
+                leaf equipment {
+                    type leafref {
+                        path '/core-model:equipment/core-model:uuid';
+                    }
+                    description "none";
+                }
+                container equipment-capability {
+                    config false;
+                    uses equipment-capability-g;
+                    description "none";
+                }
+                container equipment-configuration {
+                    uses equipment-configuration-g;
+                    description "none";
+                }
+                container equipment-status {
+                    config false;
+                    uses equipment-status-g;
+                    description "none";
+                }
+                container equipment-current-problems {
+                    config false;
+                    uses equipment-current-problems-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping equipment-capability-g {
+                leaf-list supported-alarms {
+                    type string;
+                    config false;
+                    description "Available alarms to be listed. Names are to be separated by commas.";
+                }
+                description "none";
+            }
+            grouping equipment-configuration-g {
+                list problem-type-severity-list {
+                    key 'problem-type-name';
+                    uses problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                description "none";
+            }
+            grouping equipment-status-g {
+                description "none";
+            }
+            grouping equipment-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+
+        /***********************
+        * package holder
+        **********************/ 
+            list holder-pac {
+                key 'holder';
+                leaf holder {
+                    type leafref {
+                        path '/core-model:equipment/core-model:contained-holder/core-model:uuid';
+                    }
+                    description "none";
+                }
+                container holder-capability {
+                    config false;
+                    uses holder-capability-g;
+                    description "none";
+                }
+                container holder-configuration {
+                    uses holder-configuration-g;
+                    description "none";
+                }
+                container holder-status {
+                    config false;
+                    uses holder-status-g;
+                    description "none";
+                }
+                container holder-current-problems {
+                    config false;
+                    uses holder-current-problems-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping holder-capability-g {
+                leaf-list supported-alarms {
+                    type string;
+                    config false;
+                    description "Available alarms to be listed. Names are to be separated by commas.";
+                }
+                description "none";
+            }
+            grouping holder-configuration-g {
+                list problem-type-severity-list {
+                    key 'problem-type-name';
+                    uses problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                description "none";
+            }
+            grouping holder-status-g {
+                description "none";
+            }
+            grouping holder-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+
+        /***********************
+        * package connector
+        **********************/ 
+            list connector-pac {
+                key 'connector';
+                leaf connector {
+                    type leafref {
+                        path '/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid';
+                    }
+                    description "none";
+                }
+                container connector-capability {
+                    config false;
+                    uses connector-capability-g;
+                    description "none";
+                }
+                container connector-configuration {
+                    uses connector-configuration-g;
+                    description "none";
+                }
+                container connector-status {
+                    config false;
+                    uses connector-status-g;
+                    description "none";
+                }
+                container connector-current-problems {
+                    config false;
+                    uses connector-current-problems-g;
+                    description "none";
+                }
+                description "none";
+            }
+            grouping connector-capability-g {
+                leaf-list supported-alarms {
+                    type string;
+                    config false;
+                    description "Available alarms to be listed. Names are to be separated by commas.";
+                }
+                description "none";
+            }
+            grouping connector-configuration-g {
+                list problem-type-severity-list {
+                    key 'problem-type-name';
+                    uses problem-severity-type-g;
+                    description "Severity of the problem to be configured.";
+                }
+                leaf remote-end-point {
+                    type string;
+                    description "A network wide identifier of the remote connector. The value is used for topology discovery. 
+Please see also ConnectorStatus::localEndPoint.";
+                }
+                description "none";
+            }
+            grouping connector-status-g {
+                leaf local-end-point {
+                    type string;
+                    description "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
+The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
+The value should be formated:
+<connector:uuid>@<network-element-name>
+
+Please see also ConnectorConfiguration::remoteEndPoint";
+                }
+                description "none";
+            }
+            grouping connector-current-problems-g {
+                list current-problem-list {
+                    key 'sequence-number';
+                    config false;
+                    uses current-problem-type-g;
+                    description "none";
+                }
+                description "none";
+            }
+
+
+}
diff --git a/sdnr/model/yang/onf-core-model-conditional-packages@2018-04-08.yang b/sdnr/model/yang/onf-core-model-conditional-packages@2018-04-08.yang
new file mode 100644
index 0000000..538ec27
--- /dev/null
+++ b/sdnr/model/yang/onf-core-model-conditional-packages@2018-04-08.yang
@@ -0,0 +1,472 @@
+module onf-core-model-conditional-packages {
+  namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
+  prefix onf-core-model-conditional-packages;
+
+  import core-model {
+    prefix core-model;
+  }
+  import microwave-model {
+    prefix microwave-model;
+  }
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  organization
+    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+  contact
+    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+     WG List:  <mailto:wireless-transport@login.opennetworking.org>
+     WG Chair: Lyndon Ong
+               <mailto:lyong@ciena.com>
+     WG Chair: Giorgio Cazzaniga
+               <mailto:giorgio.cazzaniga@sm-optics.com>
+     Editors:  Thorsten Heinze
+               <mailto:thorsten.heinze@telefonica.com>
+               Martin Skorupski
+               <mailto:martin.skorupski@highstreet-technologies.com>";
+  description
+    "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
+
+  revision 2018-04-08 {
+    description
+      "Initial version, used only ONAP PoC 2018-06-25";
+    reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
+  }
+
+  grouping current-problem-type-g {
+    leaf problem-name {
+      type string;
+      default "not-specified";
+      config false;
+      description
+        "Name of the alarm according capability::supportedAlarms.";
+    }
+    uses microwave-model:mw-current-problem-g;
+    description
+      "none";
+  }
+
+  grouping network-element-current-problem-type-g {
+    leaf problem-name {
+      type string;
+      default "not-specified";
+      config false;
+      description
+        "Name of the alarm according capability::supportedAlarms.";
+    }
+    leaf object-reference {
+      type string;
+      config false;
+      description
+        "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
+    }
+    uses microwave-model:mw-current-problem-g;
+    description
+      "none";
+  }
+
+  grouping problem-severity-type-g {
+    leaf problem-type-name {
+      type string;
+      description
+        "Name of the alarm according to Capability::supportedAlarms";
+    }
+    leaf problem-type-severity {
+      type microwave-model:severity-type;
+      description
+        "Severity of this type of alarm.";
+    }
+    description
+      "none";
+  }
+
+  typedef processing-type {
+    type enumeration {
+      enum "done" {
+        description
+          "none";
+      }
+      enum "processing" {
+        description
+          "none";
+      }
+    }
+    description
+      "none";
+  }
+
+  container network-element-pac {
+    leaf network-element {
+      type leafref {
+        path "/core-model:network-element/core-model:uuid";
+      }
+      description
+        "none";
+    }
+    container network-element-capability {
+      config false;
+      uses network-element-capability-g;
+      description
+        "none";
+    }
+    container network-element-configuration {
+      uses network-element-configuration-g;
+      description
+        "none";
+    }
+    container network-element-status {
+      config false;
+      uses network-element-status-g;
+      description
+        "none";
+    }
+    container network-element-current-problems {
+      config false;
+      uses network-element-current-problems-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping network-element-capability-g {
+    leaf-list supported-alarms {
+      type string;
+      config false;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping network-element-configuration-g {
+    list problem-type-severity-list {
+      key "problem-type-name";
+      uses problem-severity-type-g;
+      description
+        "Severity of the problem to be configured.";
+    }
+    leaf trigger-refresh {
+      type boolean;
+      description
+        "A trigger to instruct the netconf server to refresh its internal database/cache. 
+         It is primary used for alarms status, but could be used for anything else too. 
+         It is assumed that the refresh mechanism takes some time. 
+         In order to indicate the process to the controller a refreshStatus attribute is used.";
+    }
+    leaf connection-request-username {
+      type string {
+        length "1..256";
+      }
+      description
+        "none";
+    }
+    leaf connection-request-password {
+      type string {
+        length "8..256";
+      }
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping network-element-status-g {
+    leaf refresh-status {
+      type processing-type;
+      config false;
+      description
+        "none";
+    }
+    leaf connection-request-url {
+      type inet:domain-name;
+      config false;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping network-element-current-problems-g {
+    list current-problem-list {
+      key "sequence-number";
+      config false;
+      uses network-element-current-problem-type-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  list equipment-pac {
+    key "equipment";
+    leaf equipment {
+      type leafref {
+        path "/core-model:equipment/core-model:uuid";
+      }
+      description
+        "none";
+    }
+    container equipment-capability {
+      config false;
+      uses equipment-capability-g;
+      description
+        "none";
+    }
+    container equipment-configuration {
+      uses equipment-configuration-g;
+      description
+        "none";
+    }
+    container equipment-status {
+      config false;
+      uses equipment-status-g;
+      description
+        "none";
+    }
+    container equipment-current-problems {
+      config false;
+      uses equipment-current-problems-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping equipment-capability-g {
+    leaf-list supported-alarms {
+      type string;
+      config false;
+      description
+        "Available alarms to be listed. Names are to be separated by commas.";
+    }
+    description
+      "none";
+  }
+
+  grouping equipment-configuration-g {
+    list problem-type-severity-list {
+      key "problem-type-name";
+      uses problem-severity-type-g;
+      description
+        "Severity of the problem to be configured.";
+    }
+    description
+      "none";
+  }
+
+  grouping equipment-status-g {
+    leaf software-version {
+        type string;
+        config false;
+        description
+            "Indicates the current running software version of the equipment.";
+    }
+    leaf additional-software-version {
+        type string;
+        config false;
+        description
+            "Indicates the current running software version of the equipment.";
+    }
+    leaf up-time {
+        type uint64;
+        config false;
+        units "s";
+        description
+            "Seconds since the last reboot.";
+    }
+    leaf local-time-zone {
+        type string;
+        config false;
+        description
+            "??? Which format ??? - +00:00 proposed";
+    }
+    description
+      "none";
+  }
+
+  grouping equipment-current-problems-g {
+    list current-problem-list {
+      key "sequence-number";
+      config false;
+      uses current-problem-type-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  list holder-pac {
+    key "holder";
+    leaf holder {
+      type leafref {
+        path "/core-model:equipment/core-model:contained-holder/core-model:uuid";
+      }
+      description
+        "none";
+    }
+    container holder-capability {
+      config false;
+      uses holder-capability-g;
+      description
+        "none";
+    }
+    container holder-configuration {
+      uses holder-configuration-g;
+      description
+        "none";
+    }
+    container holder-status {
+      config false;
+      uses holder-status-g;
+      description
+        "none";
+    }
+    container holder-current-problems {
+      config false;
+      uses holder-current-problems-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping holder-capability-g {
+    leaf-list supported-alarms {
+      type string;
+      config false;
+      description
+        "Available alarms to be listed. Names are to be separated by commas.";
+    }
+    description
+      "none";
+  }
+
+  grouping holder-configuration-g {
+    list problem-type-severity-list {
+      key "problem-type-name";
+      uses problem-severity-type-g;
+      description
+        "Severity of the problem to be configured.";
+    }
+    description
+      "none";
+  }
+
+  grouping holder-status-g {
+    description
+      "none";
+  }
+
+  grouping holder-current-problems-g {
+    list current-problem-list {
+      key "sequence-number";
+      config false;
+      uses current-problem-type-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  list connector-pac {
+    key "connector";
+    leaf connector {
+      type leafref {
+        path "/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid";
+      }
+      description
+        "none";
+    }
+    container connector-capability {
+      config false;
+      uses connector-capability-g;
+      description
+        "none";
+    }
+    container connector-configuration {
+      uses connector-configuration-g;
+      description
+        "none";
+    }
+    container connector-status {
+      config false;
+      uses connector-status-g;
+      description
+        "none";
+    }
+    container connector-current-problems {
+      config false;
+      uses connector-current-problems-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+
+  grouping connector-capability-g {
+    leaf-list supported-alarms {
+      type string;
+      config false;
+      description
+        "Available alarms to be listed. Names are to be separated by commas.";
+    }
+    description
+      "none";
+  }
+
+  grouping connector-configuration-g {
+    list problem-type-severity-list {
+      key "problem-type-name";
+      uses problem-severity-type-g;
+      description
+        "Severity of the problem to be configured.";
+    }
+    leaf remote-end-point {
+      type string;
+      description
+        "A network wide identifier of the remote connector. The value is used for topology discovery. 
+         Please see also ConnectorStatus::localEndPoint.";
+    }
+    description
+      "none";
+  }
+
+  grouping connector-status-g {
+    leaf local-end-point {
+      type string;
+      description
+        "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
+         The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
+         The value should be formated:
+         <connector:uuid>@<network-element-name>
+
+         Please see also ConnectorConfiguration::remoteEndPoint";
+    }
+    description
+      "none";
+  }
+
+  grouping connector-current-problems-g {
+    list current-problem-list {
+      key "sequence-number";
+      config false;
+      uses current-problem-type-g;
+      description
+        "none";
+    }
+    description
+      "none";
+  }
+}
diff --git a/sdnr/model/yang/onf-ethernet-conditional-packages@2017-04-02.yang b/sdnr/model/yang/onf-ethernet-conditional-packages@2017-04-02.yang
new file mode 100644
index 0000000..4d6fb7c
--- /dev/null
+++ b/sdnr/model/yang/onf-ethernet-conditional-packages@2017-04-02.yang
@@ -0,0 +1,88 @@
+module onf-ethernet-conditional-packages {
+    namespace "urn:onf:params:xml:ns:yang:onf-ethernet-conditional-packages";
+    prefix onf-ethernet-conditional-packages;
+    import core-model {
+        prefix core-model;
+    }
+    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG List:  <mailto:wireless-transport@login.opennetworking.org>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             WG Chair: Giorgio Cazzaniga
+                       <mailto:giorgio.cazzaniga@sm-optics.com>
+             Editors:  Thorsten Heinze
+                       <mailto:thorsten.heinze@telefonica.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "This model adds conditional packages to the ONF CoreModel in order address Ethernet use cases.";
+    revision 2017-04-02 {
+        description "Initial version";
+        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
+    }
+    /***********************
+    * package object-classes
+    **********************/ 
+        list ethernet-pac {
+            key 'layer-protocol';
+            leaf layer-protocol {
+                type leafref {
+                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                }
+                description "none";
+            }
+            container ethernet-capability {
+                config false;
+                uses ethernet-capability-g;
+                description "none";
+            }
+            container ethernet-configuration {
+                uses ethernet-configuration-g;
+                description "none";
+            }
+            container ethernet-status {
+                config false;
+                uses ethernet-status-g;
+                description "none";
+            }
+            container ethernet-current-problems {
+                config false;
+                uses ethernet-current-problems-g;
+                description "none";
+            }
+            container ethernet-current-performance {
+                config false;
+                uses ethernet-current-performance-g;
+                description "none";
+            }
+            container ethernet-historical-performances {
+                config false;
+                uses ethernet-historical-performances-g;
+                description "none";
+            }
+            description "none";
+        }
+        grouping ethernet-capability-g {
+            description "none";
+        }
+        grouping ethernet-configuration-g {
+            leaf vlan-id {
+                type int16;
+                description "value = 0: frames on ingress must be untagged, frames on egress get untagged; value = any other positive integer < 4096: frames on ingress must be tagged with this VLAN ID, frames on egress either already have or get this VLAN ID attached;";
+            }
+            description "none";
+        }
+        grouping ethernet-status-g {
+            description "none";
+        }
+        grouping ethernet-current-problems-g {
+            description "none";
+        }
+        grouping ethernet-current-performance-g {
+            description "none";
+        }
+        grouping ethernet-historical-performances-g {
+            description "none";
+        }
+
+}
diff --git a/sdnr/model/yang/onf-otn-odu-conditional-packages@2017-10-20.yang b/sdnr/model/yang/onf-otn-odu-conditional-packages@2017-10-20.yang
new file mode 100644
index 0000000..89d6cbf
--- /dev/null
+++ b/sdnr/model/yang/onf-otn-odu-conditional-packages@2017-10-20.yang
@@ -0,0 +1,361 @@
+module onf-otn-odu-conditional-packages {
+    namespace "urn:onf:params:xml:ns:yang:onf-otn-odu-conditional-packages";
+    prefix onf-otn-odu-conditional-packages;
+    import core-model {
+        prefix core-model;
+    }
+    organization "ONF (Open Networking Foundation) Open Transport Working Group";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             Editors:  Mohit Chamania 
+                       <MChamania@advaoptical.com>
+                       Dzmitry Khomchanka
+                       <dzmitry.khomchanka@vpi-minsk.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "This model adds conditional packages to the ONF CoreModel 1.2 
+                 in order address OTN ODU use cases. It is a temorary model for 
+                 demontration purposes and bases on the ideas an concepts of
+                 TAPI. However, modifications for a pure southbound were
+                 nessesary.";
+    revision 2017-10-20 {
+        description "Initial version";
+        reference "ONF TR 512: Core Model.";
+    }
+    /***********************
+    * package type-definitions (copied from TAPI; revision: 2017-05-31)
+    **********************/ 
+        typedef mapping-type {
+            type enumeration {
+                enum amp {
+                    description "none";
+                }
+                enum bmp {
+                    description "none";
+                }
+                enum gfp-f {
+                    description "none";
+                }
+                enum gmp {
+                    description "none";
+                }
+                enum ttp-gfp-bmp {
+                    description "none";
+                }
+                enum null {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef odu-named-payload-type {
+            type enumeration {
+                enum unknown {
+                    description "none";
+                }
+                enum uninterpretable {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef odu-slot-size {
+            type enumeration {
+                enum 1-g-25 {
+                    description "none";
+                }
+                enum 2-g-5 {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef odu-type {
+            type enumeration {
+                enum odu-0 {
+                    description "none";
+                }
+                enum odu-1 {
+                    description "none";
+                }
+                enum odu-2 {
+                    description "none";
+                }
+                enum odu-2-e {
+                    description "none";
+                }
+                enum odu-3 {
+                    description "none";
+                }
+                enum odu-4 {
+                    description "none";
+                }
+                enum odu-flex {
+                    description "none";
+                }
+                enum odu-cn {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        grouping odu-payload-type-g {
+            leaf named-payload-type {
+                type odu-named-payload-type;
+                description "none";
+            }
+            leaf hex-payload-type {
+                type uint64;
+                description "none";
+            }
+            description "none";
+        }
+    /***********************
+    * package object-classes
+    **********************/ 
+
+        /***********************
+         * OTN ODU Connection (ODU-CTP)
+         **********************/ 
+        list otn-odu-connection-pac {
+            key 'layer-protocol';
+            leaf layer-protocol {
+                type leafref {
+                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                }
+                description "none";
+            }
+            container otn-odu-connection-capability {
+                config false;
+                uses otn-odu-connection-capability-g;
+                description "none";
+            }
+            container otn-odu-connection-configuration {
+                uses otn-odu-connection-configuration-g;
+                description "none";
+            }
+            container otn-odu-connection-status {
+                config false;
+                uses otn-odu-connection-status-g;
+                description "none";
+            }
+            container otn-odu-connection-current-problems {
+                config false;
+                uses otn-odu-connection-current-problems-g;
+                description "none";
+            }
+            container otn-odu-connection-current-performance {
+                config false;
+                uses otn-odu-connection-current-performance-g;
+                description "none";
+            }
+            container otn-odu-connection-historical-performances {
+                config false;
+                uses otn-odu-connection-historical-performances-g;
+                description "none";
+            }
+            description "none";
+        }
+        grouping otn-odu-connection-capability-g {
+            container accepted-payload-type {
+                uses odu-payload-type-g;
+                description 
+                    "This attribute is applicable when the ODU CTP object 
+                     instance represents a lower order ODU CTP Sink at the 
+                     client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation
+                     function. 
+                     This attribute is a 2-digit Hex code that indicates the new
+                     accepted payload type.
+                     Valid values are defined in Table 15-8 of ITU-T 
+                     Recommendation G.709 with one additional value 
+                     UN_INTERPRETABLE.";
+            }
+            description "none";
+        }
+        grouping otn-odu-connection-configuration-g {
+            leaf-list tributary-slot-list {
+                type uint64;
+                description 
+                    "This attribute contains a set of distinct (i.e. unique) 
+                     integers (e.g. 2, 3, 5, 9, 15 representing the tributary 
+                     slots TS2, TS3, TS5, TS9 and TS15) which represents the 
+                     resources occupied by the Low Order ODU Link Connection 
+                     (e.g. carrying an ODUflex with a bit rate of 6.25G). 
+                     This attribute applies when the LO ODU_ConnectionTerminationPoint 
+                     connects with an HO ODU_TrailTerminationPoint object. 
+                     It will not apply if this ODU_ConnectionTerminationPoint 
+                     object directly connects to an OTU_TrailTerminationPoint 
+                     object (i.e. OTU has no trib slots). 
+                     The upper bound of the integer allowed in this set is a 
+                     function of the HO-ODU server layer to which the ODU 
+                     connection has been mapped (adapted). 
+                     Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server 
+                     layers (respectively). Note that the value of this 
+                     attribute can be changed only in the case of ODUflex and 
+                     has to be through specific operations (i.e. not be changing
+                     the attribute tributarySlotList directly).";
+            }
+            leaf tributary-port-number {
+                type uint64;
+                description 
+                    "This attribute identifies the tributary port number that is
+                     associated with the ODU CTP. 
+                     range of type : The value range depends on the size of the 
+                     Tributary Port Number (TPN) field used which depends on th 
+                     server-layer ODU or OTU.
+                     In case of ODUk mapping into OTUk, there is no TPN field, 
+                     so the tributaryPortNumber shall be zero.
+                     In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN
+                     is encoded in a 6-bit field so the value range is 0-63. 
+                     See clause 14.4.1/G.709-2016.
+                     In case of LO ODUj mapping over ODU4, the TPN is encoded in 
+                     a 7-bit field so the value range is 0-127. 
+                     See clause 14.4.1.4/G.709-2016.
+                     In case of ODUk mapping over ODUCn, the TPN is encoded in a
+                     14-bit field so the value range is 0-16383. See clause 
+                     20.4.1.1/G.709-2016.
+                    ";
+            }
+            leaf accepted-m-si {
+                type string;
+                description 
+                    "This attribute is applicable when the ODU CTP object 
+                     instance represents a lower order ODU1 or ODU2 CTP Sink at 
+                     the client layer of the ODU3P/ODU12 adaptation function or 
+                     represents a lower order ODUj CTP Sink at the client layer 
+                     of the ODUP/ODUj-21 adaptation function. This attribute is 
+                     a 1-byte field that represents the accepted multiplex 
+                     structure of the adaptation function. ";
+            }
+            leaf opu-tributary-slot-size {
+                type odu-slot-size;
+                description 
+                    "This attribute is applicable for ODU2 and ODU3 CTP only.
+                     [sko] Why that? 
+                     It indicates the slot size of the ODU CTP.";
+            }
+            leaf auto-payload-type {
+                type boolean;
+                description 
+                    "This attribute is applicable when the ODU CTP object 
+                     instance represents a lower order ODU CTP Source at the 
+                     client layer of the ODUP/ODUj-21 adaptation function. The 
+                     value of true of this attribute configures that the 
+                     adaptation source function shall fall back to the payload 
+                     type PT=20 if the conditions specified in 14.3.10.1/G.798 
+                     are satisfied. ";
+            }
+            leaf configured-mapping-type {
+                type mapping-type;
+                description 
+                    "This attributes indicates the configured mapping type.";
+            }
+            leaf configured-client-type {
+                type string;
+                description 
+                    "This attribute configures the type of the client CTP of the
+                     server ODU TTP.";
+            }
+            description 
+               "This Pac contains the attributes associated with the ODU-CTP.";
+        }
+        grouping otn-odu-connection-status-g {
+            description "none";
+        }
+        grouping otn-odu-connection-current-problems-g {
+            description "none";
+        }
+        grouping otn-odu-connection-current-performance-g {
+            description "none";
+        }
+        grouping otn-odu-connection-historical-performances-g {
+            description "none";
+        }
+
+
+        /***********************
+         * OTN ODU Termination (ODU-TTP)
+         **********************/ 
+        list otn-odu-termination-pac {
+            key 'layer-protocol';
+            leaf layer-protocol {
+                type leafref {
+                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
+                }
+                description "none";
+            }
+            container otn-odu-termination-capability {
+                config false;
+                uses otn-odu-termination-capability-g;
+                description "none";
+            }
+            container otn-odu-termination-configuration {
+                uses otn-odu-termination-configuration-g;
+                description "none";
+            }
+            container otn-odu-termination-status {
+                config false;
+                uses otn-odu-termination-status-g;
+                description "none";
+            }
+            container otn-odu-termination-current-problems {
+                config false;
+                uses otn-odu-termination-current-problems-g;
+                description "none";
+            }
+            container otn-odu-termination-current-performance {
+                config false;
+                uses otn-odu-termination-current-performance-g;
+                description "none";
+            }
+            container otn-odu-termination-historical-performances {
+                config false;
+                uses otn-odu-termination-historical-performances-g;
+                description "none";
+            }
+            description "none";
+        }
+        grouping otn-odu-termination-capability-g {
+            description "none";
+        }
+        grouping otn-odu-termination-configuration-g {
+            leaf odu-type {
+                type odu-type;
+                description "This attribute specifies the type of the ODU 
+                             termination point.";
+            }
+            leaf odu-rate {
+                type uint64;
+                description "This attribute indicates the rate of the ODU 
+                             terminatinon point. 
+                             This attribute is Set at create; i.e., once created
+                             it cannot be changed directly. 
+                             In case of resizable ODU flex, its value can be 
+                             changed via HAO (not directly on the attribute).";
+            }
+            leaf odu-rate-tolerance {
+                type uint64;
+                units "ppm";
+                description "This attribute indicates the rate tolerance of the 
+                             ODU termination point. 
+                             Valid values are real value in the unit of ppm. 
+                             Standardized values are defined in Table 7-2/G.709.
+                             ";
+            }
+            description "none";
+        }
+        grouping otn-odu-termination-status-g {
+            description "none";
+        }
+        grouping otn-odu-termination-current-problems-g {
+            description "none";
+        }
+        grouping otn-odu-termination-current-performance-g {
+            description "none";
+        }
+        grouping otn-odu-termination-historical-performances-g {
+            description "none";
+        }
+
+}
diff --git a/sdnr/model/yang/onf-ptp-dataset@2017-05-08.yang b/sdnr/model/yang/onf-ptp-dataset@2017-05-08.yang
new file mode 100644
index 0000000..41a1c39
--- /dev/null
+++ b/sdnr/model/yang/onf-ptp-dataset@2017-05-08.yang
@@ -0,0 +1,125 @@
+module onf-ptp-dataset {
+    namespace "urn:onf:params:xml:ns:yang:onf-ptp-dataset";
+    prefix ptp-ex;
+
+    import ietf-yang-types {
+        prefix yang;
+    }
+    import core-model {
+        prefix core-model;
+    }
+    import ietf-ptp-dataset {
+        prefix ptp;
+    }
+
+    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
+    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
+             WG List:  <mailto:wireless-transport@login.opennetworking.org>
+             WG Chair: Lyndon Ong
+                       <mailto:lyong@ciena.com>
+             Editors:  Alfons Mittermaier
+                       <mailto:alfons.mittermaier@@highstreet-technologies.com>
+                       Martin Skorupski
+                       <mailto:martin.skorupski@highstreet-technologies.com>";
+    description "This module contains a collection of YANG definitions to extent ptp-dataset.";
+    revision 2017-05-08 {
+        description "Initial version";
+        reference "A YANG Data Model extending ptp-dataset.";
+    }
+
+    augment "/ptp:instance-list/ptp:default-ds" {
+        description
+            "Addition of data nodes for the default data set of the clock.";
+
+        leaf local-priority {
+            type uint8;
+            default 128;
+            description
+                "none";
+            reference 
+                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
+                 synchronization with full timing support from the network
+                 Chapter 6.3.2";
+        }
+
+        leaf max-steps-removed {
+            type uint8;
+            default 128;
+            description
+                "none";
+            reference 
+                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
+                 synchronization with full timing support from the network
+                 Chapter 6.3";
+        }
+
+        leaf multicast-mac-address {
+            type yang:mac-address;
+            description
+                "none";
+        }
+        
+        leaf designated-enabled {
+            type boolean;
+            default true;
+            description
+                "A PTP Clock needs to be enabled by management.";
+        }
+    }
+
+    augment "/ptp:instance-list/ptp:port-ds-list" {
+        description
+            "Addition of data nodes for the default data set of the clock.";
+
+        leaf master-only {
+            type boolean;
+            default true;
+            description
+                "Indicates that port can only be a master.";
+        }
+
+        leaf local-priority {
+            type uint8;
+            default 128;
+            description
+                "Local priority as used for alternate BMCA";
+            reference 
+                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
+                 synchronization with full timing support from the network
+                 Chapter 6.3.2";
+        }
+
+        leaf designated-enabled {
+            type boolean;
+            default true;
+            description
+                "A PTP Port needs to be enabled by management.";
+            reference 
+                "IEEE 1588-2008 IEEE Standard for a Precision Clock Synchronization Protocol 
+                 for Networked Measurement and Control Systems
+                 Chapter 9.2";
+        }
+
+        leaf delay-asymmetry {
+            type int64;
+            default 0;
+            description
+                "As per PTP	Known path asymmetry in ns.";
+            reference 
+                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
+                 synchronization with full timing support from the network
+                 Chapter 7.4.2";
+        }
+        
+        leaf logical-termination-point {
+            type leafref {
+                path '/core-model:network-element/core-model:ltp/core-model:uuid';
+            }
+            description
+                "A reference to a LTP of layer-protocol-name 'ETY' or 'MWPS', which is used 
+                 to discover the PTP topology.";
+        }
+
+    }
+
+}
