+module o-ran-uplane-conf {
+ yang-version 1.1;
+ namespace "urn:o-ran:uplane-conf:1.0";
+ prefix "o-ran-uplane-conf";
+
+ import o-ran-processing-element {
+ prefix "o-ran-pe";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import o-ran-module-cap {
+ prefix "mcap";
+ revision-date 2019-07-03;
+ // need to align/update with final date of publication
+ }
+
+ import o-ran-compression-factors {
+ prefix "cf";
+ }
+
+ organization "O-RAN Alliance";
+
+ contact
+ "www.o-ran.org";
+
+ description
+ "This module defines the module capabilities for
+ the O-RAN Radio Unit U-Plane configuration.
+
+ Copyright 2019 the O-RAN Alliance.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the O-RAN Alliance nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2019-07-03" {
+ description
+ "version 1.1.0
+
+ 1) added new leaf multiple-numerology-supported to enable O-RU to report
+ whether it supports multiple numerologies.
+
+ 2) fixing broken constraints (configuration cannot be dependent on
+ operational state). This is a backwards incompatible revision.
+
+ As these constraints only apply when the LAA feature is used, and also
+ when considering the limited number of implementation that need to be
+ taken into consideration for backwards compatibility, it has been
+ agreed to NOT increment the namespace integer.
+
+ 3) added frequency related capabilities for tx-arrays and rx-array
+
+ 4) removed redundant LAA import";
+
+ reference "ORAN-WG4.M.0-v01.00";
+ }
+
+ revision "2019-02-04" {
+ description
+ "version 1.0.0
+
+ 1) imported model from xRAN
+ 2) changed namespace and reference from xran to o-ran";
+
+ reference "ORAN-WG4.M.0-v01.00";
+ }
+
+ typedef polarisation_type {
+ type enumeration {
+ enum MINUS_45 {
+ description "MINUS_45";
+ }
+ enum ZERO {
+ description "ZERO";
+ }
+ enum PLUS_45 {
+ description "PLUS_45";
+ }
+ enum PLUS_90 {
+ description "PLUS_90";
+ }
+ }
+ description "Type definition for polarisations";
+ }
+
+ grouping laa-carrier-config {
+ description "Carrier Configuration for support of LAA. ";
+ leaf ed-threshold-pdsch {
+ type int8;
+ units dBm;
+ description
+ "This value indicates Energy Detection(ED) threshold for LBT for PDSCH and for measurements in dBm.";
+ }
+
+ leaf ed-threshold-drs {
+ type int8;
+ units dBm;
+ description
+ "This value indicates Energy Detection(ED) threshold for LBT for DRS in dBm.";
+ }
+
+ leaf tx-antenna-ports {
+ type uint8;
+ description
+ "This value indicates Tx antenna ports for DRS (1, 2, 4)";
+ }
+
+ leaf transmission-power-for-drs {
+ type int8;
+ units decibels;
+ description
+ "This value indicates offset of Cell specific reference Signal(CRS) power to reference signal power (dB).
+ DRS signal consists of CRS, PSS, SSS, and optionally CSI-RS.";
+ }
+
+ leaf dmtc-period {
+ type enumeration {
+ enum FORTY {
+ description
+ "40 ms";
+ }
+ enum EIGHTY {
+ description
+ "80 ms";
+ }
+ enum ONE-HUNDRED-SIXTY {
+ description
+ "160 ms";
+ }
+ }
+ units milliseconds;
+ description
+ "This value indicates DRS measurement timing configuration (DMTC) period in ms";
+ }
+
+ leaf dmtc-offset {
+ type uint8;
+ units subframes;
+ description
+ "This value indicates dmtc offset in Subframes.";
+ }
+
+ leaf lbt-timer {
+ type uint16;
+ units milliseconds;
+ description
+ "This value indicates LBT Timer in milliseconds.";
+ }
+
+ list max-cw-usage-counter {
+ when "/mcap:module-capability/mcap:rw-sub-band-info/mcap:rw-self-configure = 'true'";
+ key "priority";
+ description "";
+ leaf priority {
+ type enumeration {
+ enum P1 {
+ description "priority 1";
+ }
+ enum P2 {
+ description "priority 2";
+ }
+ enum P3 {
+ description "priority 3";
+ }
+ enum P4 {
+ description "priority 4";
+ }
+ }
+ description "This value provides the priority class traffic for which the counter is calculated.";
+ }
+
+ leaf counter-value {
+ type uint8 {
+ range "1..8";
+ }
+ description "This value indicates the maximum value of counter
+ which shows how many max congestion window value is used for backoff
+ number of priority class traffic. This value is defined at 3GPP 36.213
+ section 15.1.3 as K.";
+ }
+ }
+ }
+
+ grouping eaxc {
+ description
+ "One eAxC identifier (eAxC ID) comprises a band and sector
+ identifier (BandSector_ID), a component-carrier identifier (CC_ID) and a
+ spatial stream identifier (RU_Port_ID).
+
+ In this version of the specification, one eAxC contains only one spatial
+ stream (i.e. one beam per subcarrier) at a time.
+
+ Bit allocation is subdivided as follows:
+ * O_DU_Port_ID: Used to differentiate processing units at O-DU
+ * BandSector_ID: Aggregated cell identifier
+ * CC_ID: distinguishes Carrier Components
+ * RU_Port_ID: Used to differentiate spatial streams or beams on the O-RU
+
+ The bitwidth of each of the above fields is variable this model is supposed to check
+ if we are occpying bits continuously but we do not have to occupy all 16 bits";
+
+
+ leaf o-du-port-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode O-DU Port ID";
+ }
+
+ leaf band-sector-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode the band sector ID";
+ }
+
+ leaf ccid-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode the component carrier id";
+ }
+
+ leaf ru-port-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode the O-RU Port ID";
+ }
+
+ leaf eaxc-id {
+ type uint16;
+ mandatory true;
+ description
+ "encoded value of eaxcid to be read by CU-Plane";
+ }
+ }
+
+ grouping parameters {
+ description
+ "Grouping of all parameters common between UL and DL";
+
+ leaf name {
+ type string;
+ mandatory true;
+ description "Unique name of array antenna";
+ }
+
+ leaf number-of-rows {
+ type uint16;
+ mandatory true;
+ description "Number of rows array elements are shaped into - M";
+ }
+
+ leaf number-of-columns {
+ type uint16;
+ mandatory true;
+ description "Number of columns array elements are shaped into - N";
+ }
+
+ leaf number-of-array-layers {
+ type uint8;
+ mandatory true;
+ description "Number of array layers array elements are shaped into - Q";
+ }
+
+ leaf horizontal-spacing {
+ type decimal64 {
+ fraction-digits 5;
+ }
+ units Meter;
+
+ description "Average distance between centers of nearby AE in horizontal direction (in array coordinates system)";
+ }
+
+ leaf vertical-spacing{
+ type decimal64 {
+ fraction-digits 5;
+ }
+ units Meter;
+
+ description "Average distance between centers of nearby AE in vertical direction (in array coordinates system)";
+ }
+
+ container normal-vector-direction {
+ description
+ "Counter-clockwise rotation around z and y axis.";
+
+ leaf azimuth-angle{
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units Degrees;
+
+ description "Azimuth angle, counter-clockwise rotation around z-axis. Value 'zero' points to broad-side, value '90' points to y-axis";
+ }
+ leaf zenith-angle{
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units Degrees;
+
+ description "Zenith angle, counter-clockwise rotation around y-axis. Value 'zero' points to zenith, value '90' points to horizon";
+ }
+ }
+
+ container leftmost-bottom-array-element-position {
+ description "Structure describing position of leftmost, bottom array element.";
+ leaf x {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units Meter;
+
+ description "X dimension of position of leftmost, bottom array element";
+ }
+
+ leaf y {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units Meter;
+
+ description "Y dimension of position of leftmost, bottom array element";
+ }
+
+ leaf z {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units Meter;
+
+ description "Z dimension of position of leftmost, bottom array element";
+ }
+ }
+ list polarisations {
+ key "p";
+ min-elements 1;
+ max-elements 2;
+
+ description
+ "List of supported polarisations.";
+
+ leaf p {
+ type uint8;
+ mandatory true;
+ description
+ "Polarisation index. See CUS-plane";
+ }
+
+ leaf polarisation {
+ type polarisation_type;
+ mandatory true;
+ description "Type of polarisation supported by array.";
+ }
+ }
+ leaf band-number {
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ }
+ mandatory true;
+ description
+ "This parameter informing which frequency band particular antenna
+ array is serving for.
+ Intended use is to deal with multiband solutions.";
+ }
+ }
+
+ grouping array-choice {
+ choice antenna-type {
+ case tx {
+ leaf tx-array-name {
+ type leafref {
+ path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:tx-arrays/o-ran-uplane-conf:name";
+ }
+
+ description
+ "Leafref to tx array if such is choosen";
+ }
+ }
+ case rx {
+ leaf rx-array-name {
+ type leafref {
+ path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:rx-arrays/o-ran-uplane-conf:name";
+ }
+
+ description
+ "Leafref to rx array if such is choosen";
+ }
+ }
+ description
+ "Choice for antenna type";
+ }
+ description
+ "Elements which groups choice for antenna type";
+ }
+
+ grouping scs-config {
+ description
+ "It groups all parameters related to SCS configuration";
+
+ leaf frame-structure {
+ type uint8;
+
+ description
+ "This parameter defines the frame structure. The first 4 bits define the FFT/iFFT size
+ being used for all IQ data processing related to this message.
+ The second 4 bits define the sub carrier spacing as well as the number of slots per 1ms sub-frame
+ according to 3GPP TS 38.211, taking for completeness also 3GPP TS 36.211 into account";
+ }
+
+ leaf cp-type {
+ type enumeration {
+ enum NORMAL {
+ description
+ "Normal cyclic prefix";
+ }
+
+ enum EXTENDED {
+ description
+ "Extended cyclic prefix";
+ }
+ }
+
+ description
+ "Provides type of CP (cyclic prefix) if section type 3 is not used or type of CP cannot be determined from cpLength.";
+ }
+
+ leaf cp-length {
+ type uint16;
+ units Ts;
+ mandatory true;
+ description
+ "Used for symbol 0 for NR & LTE, and symbol 7*2u for NR.
+ See CUS-plane";
+ }
+
+ leaf cp-length-other {
+ type uint16;
+ units Ts;
+ mandatory true;
+ description
+ "Used for other symbols than by cp-length above";
+ }
+
+ leaf offset-to-absolute-frequency-center {
+ type int32;
+ mandatory true;
+ description
+ "This provides value of freqOffset to be used if section type 3 is not used. See freqOffset in CUS-plane.";
+ }
+
+ list number-of-prb-per-scs {
+ key scs;
+ description
+ "List of configured for each SCS that will be used.";
+
+ leaf scs {
+ type mcap:scs-config-type;
+ description
+ "Value corresponds to SCS values defined for frameStructure in C-plane.
+ Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
+ }
+
+ leaf number-of-prb {
+ type uint16;
+ mandatory true;
+ description
+ "Determines max number of PRBs that will be used in all sections per one symbol.
+ This is affecting allocation of resources to endpoint. Value shall not exceed constrains
+ defined by max-prb-per-symbol of endpoint type. In addition sum (over all used epoints
+ within a group of endpoints sharing resources) of number-of-prb rounded up to
+ nearest value from prb-capacity-allocation-granularity shall not exceed max-prb-per-symbol of the group.";
+ }
+ }
+ }
+
+ grouping tx-common-array-carrier-elements {
+ description
+ "This grouping containes all common parameters for tx-array-carriers and rx-array-carriers";
+
+ leaf absolute-frequency-center {
+ type uint32;
+ mandatory true;
+ description
+ "Absolute Radio Frequency Channel Number - indirectly indicates RF center carrier frequency of signal.
+ Reflected in arfcn.";
+ }
+
+ leaf center-of-channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+ description
+ "Center frequency of channel bandwidth in Hz. Common for all numerologies.";
+ }
+
+ leaf channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+
+ description
+ "Width of carrier given in Hertz";
+ }
+
+ leaf active {
+ type enumeration {
+ enum INACTIVE {
+ description
+ "carrier does not provide signal - transmission is disabled";
+ }
+ enum SLEEP{
+ description
+ "carrier is fully configured and was active but is energy saving mode";
+ }
+ enum ACTIVE{
+ description
+ "carrier is fully configured and properly providing the signal";
+ }
+ }
+ default INACTIVE;
+
+ description
+ "Indicates if transmission is enabled for this array carriers. Note that Netconf server uses state parameter
+ to indicate actual state of array carriers operation. When array carriers is in sleep status,
+ Netconf server rejects all other operation request to tx-array-carriers object except either request to change from sleep
+ to active status or delete MO operation (see 4.8) to the object.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum DISABLED {
+ description
+ "array carrier is not active - transmission of signal is disabled.";
+ }
+ enum BUSY {
+ description
+ "array carrier is processing an operation requested by change of active parameter.
+ When array carriers is BUSY the transmission of signal is not guaranteed.";
+ }
+ enum READY {
+ description
+ "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
+ }
+ }
+ config false;
+ mandatory true;
+ description
+ "Indicates state of array carriers activation operation";
+ }
+
+ leaf type {
+ type enumeration {
+ enum NR {
+ description
+ "5G technology";
+ }
+ enum LTE {
+ description
+ "LTE technology";
+ }
+ }
+ config false;
+ mandatory true;
+ description
+ "Type of carrier. Indicates array-carrier technology.";
+ }
+ leaf duplex-scheme {
+ type enumeration {
+ enum TDD {
+ description
+ "TDD scheme";
+ }
+ enum FDD {
+ description
+ "FDD scheme";
+ }
+ }
+ config false;
+
+ description
+ "Type of duplex scheme O-RU supports.";
+ }
+ leaf rw-duplex-scheme {
+ type leafref {
+ path "/user-plane-configuration/tx-array-carriers[name=current()/../name]" + "/duplex-scheme";
+ require-instance false;
+ }
+ description
+ "Config true type of duplex scheme.";
+ }
+ leaf rw-type {
+ type leafref {
+ path "/user-plane-configuration/tx-array-carriers[name=current()/../name]" + "/type";
+ require-instance false;
+ }
+ description
+ "Config true type of carrier.";
+ }
+ }
+
+ grouping rx-common-array-carrier-elements {
+ description
+ "This grouping containes all common parameters for tx-array-carriers and rx-array-carriers";
+
+ leaf absolute-frequency-center {
+ type uint32;
+ mandatory true;
+ description
+ "Absolute Radio Frequency Channel Number - indirectly indicates RF center carrier frequency of signal.
+ Reflected in arfcn.";
+ }
+
+ leaf center-of-channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+ description
+ "Center frequency of channel bandwidth in Hz. Common for all numerologies.";
+ }
+
+ leaf channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+
+ description
+ "Width of carrier given in Hertz";
+ }
+
+ leaf active {
+ type enumeration {
+ enum INACTIVE {
+ description
+ "carrier does not provide signal - transmission is disabled";
+ }
+ enum SLEEP{
+ description
+ "carrier is fully configured and was active but is energy saving mode";
+ }
+ enum ACTIVE{
+ description
+ "carrier is fully configured and properly providing the signal";
+ }
+ }
+ default INACTIVE;
+
+ description
+ "Indicates if transmission is enabled for this array carriers. Note that Netconf server uses state parameter
+ to indicate actual state of array carriers operation. When array carriers is in sleep status,
+ Netconf server rejects all other operation request to tx-array-carriers object except either request to change from sleep
+ to active status or delete MO operation (see 4.8) to the object.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum DISABLED {
+ description
+ "array carrier is not active - transmission of signal is disabled.";
+ }
+ enum BUSY {
+ description
+ "array carrier is processing an operation requested by change of active parameter.
+ When array carriers is BUSY the transmission of signal is not guaranteed.";
+ }
+ enum READY {
+ description
+ "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
+ }
+ }
+ config false;
+ mandatory true;
+ description
+ "Indicates state of array carriers activation operation";
+ }
+
+ leaf type {
+ type enumeration {
+ enum NR {
+ description
+ "5G technology";
+ }
+ enum LTE {
+ description
+ "LTE technology";
+ }
+ }
+ config false;
+ mandatory true;
+ description
+ "Type of carrier. Indicates array-carrier technology.";
+ }
+ leaf duplex-scheme {
+ type enumeration {
+ enum TDD {
+ description
+ "TDD scheme";
+ }
+ enum FDD {
+ description
+ "FDD scheme";
+ }
+ }
+ config false;
+
+ description
+ "Type of duplex scheme O-RU supports.";
+ }
+ }
+
+ grouping endpoint-section-capacity {
+ leaf max-control-sections-per-data-section {
+ type uint8 {
+ range "1..12";
+ }
+ description
+ "Max number of C-plane sections (C-plane section is part of C-plane message that carries 'section fields')
+ referring to same U-plane section (U-plane section is part of U-plane message that carries
+ 'section header fields' and 'PRB fields') that is supported by endpoint.
+ Note that additional limitations specific for each section type apply on top of this number.";
+ }
+ leaf max-sections-per-symbol {
+ type uint16;
+ description
+ "Max number of sections within one symbol that can be processed by endpoint
+ or processed collectively by group of endpoints sharing capacity";
+ }
+ leaf max-sections-per-slot {
+ type uint16;
+ description
+ "Max number of sections within one slot that can be processed by endpoint
+ or processed collectively by group of endpoints sharing capacity.";
+ }
+
+ description
+ "Parameters describing section capacity where section is undestood as number of different sectionId values";
+ }
+
+ grouping endpoint-beam-capacity {
+ leaf max-beams-per-symbol {
+ type uint16;
+ description
+ "Max number of beams within one symbol that can be processed by endpoint
+ or processed collectively by group of endpoints sharing capacity";
+ }
+ leaf max-beams-per-slot {
+ type uint16;
+ description
+ "Max number of beams within one slot that can be processed by endpoint
+ or processed collectively by group of endpoints sharing capacity";
+ }
+
+ description
+ "Parameters describing beam capacity where number of beams is understood as number of different beamId values";
+ }
+
+ grouping endpoint-prb-capacity {
+ leaf max-prb-per-symbol {
+ type uint16;
+ description
+ "Max number of prbs within one symbol that can be processed by endpoint
+ or processed collectively by group of endpoints sharing capacity";
+ }
+
+ description
+ "Attributes presenting processing capacity related to PRB.";
+ }
+
+ grouping endpoint-numerology-capacity {
+ leaf max-numerologies-per-symbol {
+ type uint16;
+ description
+ "Max number of numerologies within one symbol that can be processed by endpoint
+ or processed collectively by group of endpoints sharing capacity";
+ }
+
+ description
+ "Attributes presenting processing capacity related to numerology.
+
+ This leaf contains valid data only when multiple-numerology-supported
+ is set to true.";
+ }
+
+ grouping uplane-conf-group {
+ description
+ "Grouping for uplane configuration related parameters";
+
+ list low-level-tx-links {
+ key name;
+ description
+ "Object model for low-level-tx-link configuration";
+
+ leaf name {
+ type string;
+ description
+ "Unique name of low-level-tx-link object.";
+ }
+
+ leaf processing-element {
+ type leafref {
+ path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+ }
+ mandatory true;
+ description
+ "Contains name of processing-element to be used as transport by low-level-tx-link";
+ }
+
+ leaf tx-array-carrier {
+ type leafref {
+ path "/user-plane-configuration/tx-array-carriers/name";
+ }
+ mandatory true;
+ description
+ "Contains name of tx-array-carriers MO to be used as transport by low-level-tx-link";
+ }
+
+ leaf low-level-tx-endpoint {
+ type leafref {
+ path "/user-plane-configuration/low-level-tx-endpoints/name";
+ }
+ mandatory true;
+ description
+ "Contains name of low-level-tx-endpoints MO to be used as transport by low-level-tx-link";
+ }
+ }
+
+ list low-level-rx-links {
+ key name;
+ description
+ "Object model for low-level-rx-links configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of low-level-rx-links object.";
+ }
+
+ leaf processing-element {
+ type leafref {
+ path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+ }
+ mandatory true;
+ description
+ "Contains name of processing-element to be used as transport by LowLevelTxLink";
+ }
+
+ leaf rx-array-carrier {
+ type leafref {
+ path "/user-plane-configuration/rx-array-carriers/name";
+ }
+ mandatory true;
+
+ description
+ "Contains name of rx-array-carriers MO to be used as transport by low-level-rx-links";
+ }
+
+ leaf low-level-rx-endpoint {
+ type leafref {
+ path "/user-plane-configuration/low-level-rx-endpoints/name";
+ }
+ mandatory true;
+
+ description
+ "Contains name of low-level-rx-endpoints MO to be used as transport by low-level-rx-links";
+ }
+
+ leaf user-plane-uplink-marking {
+ type leafref {
+ path "/o-ran-pe:processing-elements/o-ran-pe:enhanced-uplane-mapping/o-ran-pe:uplane-mapping/o-ran-pe:up-marking-name";
+ }
+ description
+ "Parameter to set the non-default marking for user-plane";
+ }
+ }
+
+ list endpoint-types {
+ key "id";
+ config false;
+ description
+ "Properties of endpoint that are common to multiple endpoints if such are identified";
+
+ leaf id {
+ type uint16;
+ description
+ "Identifies type of endpoints sharing same properties. Values shall start with 0 and shall be allocated without gaps.";
+ }
+
+ list supported-section-types {
+ key "section-type";
+ description
+ "Indicates section types and extensions endpoints of this type support";
+
+ leaf section-type {
+ type uint8;
+
+ description
+ "This parameter determines the characteristics of U-plane data to be transferred or received from a beam with one pattern id.";
+ }
+
+ leaf-list supported-section-extensions {
+ type uint8;
+
+ description
+ "This parameter provides the extension types supported by the O-RU
+ which provides additional parameters specific to the subject data extension";
+ }
+ }
+
+ leaf-list supported-frame-structures {
+ type uint8;
+
+ description
+ "List of supported values of frame structure";
+ }
+
+ leaf managed-delay-support {
+ type enumeration {
+ enum MANAGED {
+ description
+ "Time managed delays are supported";
+ }
+
+ enum NON_MANAGED {
+ description
+ "Non time managed delays are not supported";
+ }
+
+ enum BOTH {
+ description
+ "Both time managed and non time managed delays are supported";
+ }
+ }
+
+ description
+ "Type of delay supported by the endpoint";
+ }
+
+ leaf multiple-numerology-supported {
+ type boolean;
+ default true;
+ description
+ "Indicates whether the endpoint type supports multiple numerologies";
+ }
+
+ leaf max-numerology-change-duration {
+ type uint16 {
+ range "0..10000";
+ }
+
+ units Ts;
+ description
+ "Maximum gap of endpoint operation that will be caused by changing of
+ numerology.
+
+ This time is required for reconfiguration and flushing of pipes.
+
+ This leaf contains valid data only when multiple-numerology-supported
+ is set to true.";
+ }
+
+ uses endpoint-section-capacity;
+ uses endpoint-beam-capacity;
+ uses endpoint-prb-capacity;
+
+ leaf-list prb-capacity-allocation-granularity {
+ type uint16;
+
+ description
+ "List of capacity allocation steps. O-RU allocates PRB capacity rounding it up to nearest value N
+ from prb-capacity-allocation-granularity such that M >= number-of-prb-per-scs.
+ See also number-of-prb-per-scs/number-of-prb.";
+ }
+
+ uses endpoint-numerology-capacity;
+ }
+
+ list endpoint-capacity-sharing-groups {
+ key "id";
+ config false;
+ description
+ "Represents groups of endpoints that share capacity. Depending on O-RU implementation,
+ processing resources that handle CU-plane (e.g. memory to keep sections and beams)
+ could be allocated per endpoint or shared between several endpoints.
+ To address this O-RU shall reports own capability per endpoint (see endpoint-types)
+ and per group of endpoints sharing capacity.
+ If endpoint is in multiple groups then resulting constraint is minimum over all groups.
+ Note: values of parameters representing capacity that is not shared between endpoints in a group shall be set to max value of specific parameter; this effectively removes related constraint.
+";
+
+ leaf id {
+ type uint16;
+ description
+ "Identifies group of endpoints sharing resources.
+ Values shall start with 0 and shall be allocated without gaps.";
+ }
+ uses endpoint-section-capacity;
+ uses endpoint-beam-capacity;
+ uses endpoint-prb-capacity;
+ uses endpoint-numerology-capacity;
+
+ leaf max-endpoints {
+ type uint16;
+ description
+ "Indicates how many endpoints in the group can be used4 simultaneously";
+ }
+ leaf max-managed-delay-endpoints {
+ type uint16;
+ description
+ "Number of endpoints supporting managed delay that can be used (configured for use) at a time";
+ }
+ leaf max-non-managed-delay-endpoints {
+ type uint16;
+ description
+ "Number of endpoints supporting non-managed delay that can be used (configured for use) at a time";
+ }
+ }
+
+ list static-low-level-tx-endpoints {
+ key name;
+ config false;
+ description
+ "Object model for static-low-level-tx-endpoints configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of static-low-level-tx-endpoints object.";
+ }
+
+ leaf-list restricted-interfaces {
+ type leafref {
+ path "/if:interfaces/if:interface/if:name";
+ }
+ description
+ "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
+ }
+
+ leaf array {
+ type leafref {
+ path "/user-plane-configuration/tx-arrays/name";
+ }
+ mandatory true;
+ description
+ "Contains distname of tx-arrays, particular low-level-tx-endpoints is in hardware dependency with.
+ Note: single instance of tx-arrays can be referenced by many instances of low-level-tx-endpoints
+ (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
+ }
+
+ leaf endpoint-type {
+ type leafref {
+ path "../../endpoint-types/id";
+ }
+
+ description
+ "Reference to endpoint type capabilities list element supported by this endpoint";
+ }
+
+ leaf-list capacity-sharing-groups {
+ type leafref {
+ path "../../endpoint-capacity-sharing-groups/id";
+ }
+
+ description
+ "Reference to capacities of sharing-groups supported by this endpoint";
+ }
+ }
+
+ list static-low-level-rx-endpoints {
+ key name;
+ config false;
+ description
+ "Object model for static-low-level-rx-endpoints configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of static-low-level-rx-endpoints object.";
+ }
+
+ leaf-list restricted-interfaces {
+ type leafref {
+ path "/if:interfaces/if:interface/if:name";
+ }
+ description
+ "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
+ }
+
+ leaf array {
+ type leafref {
+ path "/user-plane-configuration/rx-arrays/name";
+ }
+ mandatory true;
+ description
+ "Contains distname of rx-arrays, particular low-level-rx-endpoints is in hardware dependency with.
+ Note: single instance of rx-arrays can be referenced by many instances of low-level-rx-endpoints
+ (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
+ }
+
+ leaf endpoint-type {
+ type leafref {
+ path "../../endpoint-types/id";
+ }
+
+ description
+ "Reference to endpoint type capabilities list element supported by this endpoint";
+ }
+
+ leaf-list capacity-sharing-groups {
+ type leafref {
+ path "../../endpoint-capacity-sharing-groups/id";
+ }
+
+ description
+ "Reference to capacities of sharing-groups supported by this endpoint";
+ }
+ }
+
+ list low-level-tx-endpoints {
+ key "name";
+
+ description
+ "Object model for low-level-tx-endpoints configuration - augmented static-low-level-tx-endpoints by local-address
+ which cannot be added to static low-level-tx-endpoints as we cannot have modificable element in static object";
+
+ leaf name {
+ type leafref {
+ path "/user-plane-configuration/static-low-level-tx-endpoints/name";
+ require-instance false;
+ }
+ mandatory true;
+
+ description
+ "Unique name of low-level-tx-endpoint object. Reference to static object";
+ }
+
+ container compression {
+ presence
+ "This container shall exists to avoid missaligned compression
+ methods between devices";
+
+ description
+ "Container which consists of global configurable parameters for compression";
+
+ uses cf:compression-details;
+ }
+
+ uses scs-config;
+
+ container e-axcid {
+ uses eaxc;
+
+ description
+ "Contains local address of low level TX endpoint offered by Netconf server.";
+ }
+
+
+
+ }
+
+ list low-level-rx-endpoints {
+ key name;
+
+ description
+ "Object model for low-level-rx-endpoint configuration - augmented static-low-level-rx-endpoints by local-address
+ which cannot be added to static low-level-rx-endpoints as we cannot have modificable element in static object";
+
+ leaf name {
+ type leafref {
+ path "/user-plane-configuration/static-low-level-rx-endpoints/name";
+ require-instance false;
+ }
+ mandatory true;
+
+ description
+ "Unique name of low-level-rx-endpoint object. Reference to static object";
+ }
+
+ container compression {
+ description
+ "Container which consists of global configurable parameters for compression";
+
+ uses cf:compression-details;
+ }
+
+ uses scs-config;
+
+ list ul-fft-sampling-offsets {
+ key scs;
+ description
+ "List of FFT sampling offsets configured for each SCS that will be used.
+ Client shall configure one element for each SCS that will be used.";
+
+ leaf scs {
+ type mcap:scs-config-type;
+ description
+ "Value corresponds to SCS values defined for frameStructure in C-plane
+ Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
+ }
+
+ leaf ul-fft-sampling-offset {
+ type uint16;
+
+ units Ts;
+ description
+ "Determines time advance of capture window for FFT.
+ Value represents time advance of capture window start in relation to the end of CP. Unit is Ts.
+ Note: value of this parameter is usually set to '0' (zero) for PRACH channels.
+ Any phase offset resulting from the non-zero value of this parameter is handled in O-DU.";
+ }
+ }
+
+ container e-axcid {
+ uses eaxc;
+
+ description
+ "Contains local address of low level RX endpoint offered by Netconf server.";
+ }
+
+ leaf non-time-managed-delay-enabled {
+ type boolean;
+ default false;
+ description
+ "Tells if non time managed delay shall be enabled";
+ }
+ }
+
+ list tx-array-carriers {
+ key name;
+ description
+ "Object model for tx-array-carriers configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of tx-array-carriers object.";
+ }
+
+ uses tx-common-array-carrier-elements;
+
+ leaf band-number {
+ if-feature mcap:LAA;
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ require-instance false;
+ }
+ description
+ "This parameter informing which frequency band particular antenna
+ array is serving for.
+ Intended use is to deal with multiband solutions.";
+ }
+
+ container lte-tdd-frame {
+ when "(/user-plane-configuration/tx-array-carriers/rw-type = 'LTE') and (/user-plane-configuration/tx-array-carriers/rw-duplex-scheme = 'TDD')";
+ description
+ "Container which consists of global configurable parameters for tdd Frame";
+
+ leaf subframe-assignment {
+ type enumeration {
+ enum SAO {
+ description "subframe assignment configuration 0";
+ }
+ enum SA1 {
+ description "subframe assignment configuration 1";
+ }
+ enum SA2 {
+ description "subframe assignment configuration 2";
+ }
+ enum SA3 {
+ description "subframe assignment configuration 3";
+ }
+ enum SA4 {
+ description "subframe assignment configuration 4";
+ }
+ enum SA5 {
+ description "subframe assignment configuration 5";
+ }
+ enum SA6 {
+ description "subframe assignment configuration 6";
+ }
+ }
+ mandatory true;
+ description
+ "Indicates DL/UL subframe configuration as specified in
+ 3GPP TS 36.211 [v15.3.0, table 4.2-2]";
+ }
+ leaf special-subframe-pattern {
+ type enumeration {
+ enum SPP0 {
+ description "special subframe pattern configuration 0";
+ }
+ enum SPP1 {
+ description "special subframe pattern configuration 1";
+ }
+ enum SPP2 {
+ description "special subframe pattern configuration 2";
+ }
+ enum SPP3 {
+ description "special subframe pattern configuration 3";
+ }
+ enum SPP4 {
+ description "special subframe pattern configuration 4";
+ }
+ enum SPP5 {
+ description "special subframe pattern configuration 5";
+ }
+ enum SPP6 {
+ description "special subframe pattern configuration 6";
+ }
+ enum SPP7 {
+ description "special subframe pattern configuration 7";
+ }
+ enum SPP8 {
+ description "special subframe pattern configuration 8";
+ }
+ enum SPP9 {
+ description "special subframe pattern configuration 9";
+ }
+ enum SPP10 {
+ description "special subframe pattern configuration 10";
+ }
+ }
+ mandatory true;
+ description
+ "Indicates TDD special subframe configuration as in TS 36.211
+ [v15.3.0, table 4.2-1] ";
+ }
+ }
+
+ container laa-carrier-configuration {
+ when "../band-number = 46";
+ if-feature mcap:LAA;
+ description "Container to specify LAA feature related carrier configuration.";
+ uses laa-carrier-config;
+ }
+
+ leaf gain {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units dB;
+ mandatory true;
+
+ description
+ "Transmission gain in dB. Value applicable to each array element carrier belonging to array carrier.";
+ }
+
+ leaf downlink-radio-frame-offset {
+ type uint32 {
+ range 0..12288000;
+ }
+ mandatory true;
+
+ description
+ "This parameter is used for offsetting the starting position of 10ms radio frame.
+ Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
+ Note2: Unit is 1/1.2288e9 Hz and accuracy is 1/4 Tc. Then, its range is calculated 0..12288000.";
+ }
+
+ leaf downlink-sfn-offset {
+ type int16 {
+ range -32768..32767;
+ }
+ mandatory true;
+
+ description
+ "This parameter is used for offsetting SFN value.
+ Unit is in 10ms.
+ Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
+ }
+ }
+
+ list rx-array-carriers {
+ key name;
+ description
+ "Object model for rx-array-carriers configuration";
+
+ leaf name {
+ type string;
+ description
+ "Unique name of rx-array-carriers object.";
+ }
+
+ uses rx-common-array-carrier-elements;
+
+ leaf downlink-radio-frame-offset {
+ type uint32 {
+ range 0..12288000;
+ }
+ mandatory true;
+
+ description
+ "This parameter is used for offsetting the starting position of 10ms radio frame.
+ Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
+ Note2: Unit is 1/1.2288e9 Hz and accuracy is 1/4 Tc. Then, its range is calculated 0..12288000.";
+ }
+
+ leaf downlink-sfn-offset {
+ type int16 {
+ range -32768..32767;
+ }
+ mandatory true;
+
+ description
+ "This parameter is used for offsetting SFN value.
+ Unit is in 10ms.
+ Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
+ }
+
+ leaf gain-correction {
+ type decimal64 {
+ fraction-digits 4;
+
+ }
+ units dB;
+ mandatory true;
+ description
+ "Gain correction of RF path linked with array element or array layers";
+ }
+
+ leaf n-ta-offset {
+ type uint32;
+ units Tc;
+ mandatory true;
+ description
+ "Value of configurable N-TA offset
+ units are Tc=~0.5ns=1/1.96608GHz";
+ }
+ }
+
+ list tx-arrays {
+ key "name";
+ config false;
+ description
+ "Structure describing TX array parameters";
+
+ uses parameters;
+
+ leaf max-gain {
+ type decimal64 {
+ fraction-digits 4;
+
+ }
+ units dB;
+ mandatory true;
+ description
+ "Max gain of RF path linked with array element (minimum over elements of array) or array layers";
+ }
+
+ leaf independent-power-budget {
+ type boolean;
+ mandatory true;
+ description
+ "If true then every element of array has own, power budget independent from power budget of other elements.
+ Else all elements of array that are at same row and column and have same polarization share power budget";
+ }
+
+ list capabilities {
+ description
+ "List of capabilities related to this tx-array";
+ uses mcap:support-for-dl;
+ }
+ }
+
+ list rx-arrays {
+ key "name";
+ config false;
+ description "Structure describing RX array parameters";
+
+ uses parameters;
+ container gain-correction-range {
+ leaf max {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units dB;
+ mandatory true;
+ description "Array gain correction factor - maximum allowed value";
+ }
+ leaf min {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units dB;
+ mandatory true;
+ description "Array gain correction factor - minimum allowed value";
+ }
+
+ description
+ "Array gain correction factor";
+ }
+
+ list capabilities {
+ description
+ "List of capabilities related to this rx-array";
+ uses mcap:support-for-ul;
+ }
+ }
+
+ list relations {
+ key "entity";
+ config false;
+ description "Structure describing relations between array elements";
+
+ leaf entity {
+ type uint16;
+
+ description
+ "Relation entity. Used as a key for list of relations.";
+ }
+
+ container array1 {
+ uses array-choice;
+
+ description
+ "Defnes name for first array";
+ }
+ container array2 {
+ uses array-choice;
+
+ description
+ "Defnes name for second array";
+ }
+ list types {
+ key "relation-type";
+ description
+ "Defines relation type and pairs for array elements for given arrays";
+
+ leaf relation-type {
+ type enumeration {
+ enum SHARED {
+ description "SHARED";
+ }
+ enum COALOCATED {
+ description "COALOCATED";
+ }
+ }
+ description "Type of relation between array elements";
+ }
+ list pairs {
+ key "element-array1";
+ description
+ "defines related array elements";
+
+ leaf element-array1 {
+ type uint16;
+
+ description
+ "Tells about id of element from array1";
+ }
+ leaf element-array2 {
+ type uint16;
+
+ description
+ "Tells about id of element from array2";
+ }
+ }
+ }
+ }
+ }
+
+ grouping tx-array-notification-group {
+ description
+ "Grouping for tx-array for notification";
+
+ list tx-array-carriers{
+ key name;
+ description "notification of state change for tx-array-carriers";
+
+ leaf name{
+ type leafref{
+ path "/user-plane-configuration/tx-array-carriers/name";
+ }
+ description
+ "name of tx-array-carriers is notified at state change";
+ }
+ leaf state{
+ type leafref{
+ path "/user-plane-configuration/tx-array-carriers/state";
+ }
+ description
+ "state of tx-array-carriers is notified at state change";
+ }
+ }
+ }
+
+ grouping rx-array-notification-group {
+ description
+ "Grouping for rx-array for notification";
+
+ list rx-array-carriers{
+ key name;
+ description
+ "Notification used to inform about state change of rx-array-carriers";
+ leaf name{
+ type leafref{
+ path "/user-plane-configuration/rx-array-carriers/name";
+ }
+ description
+ "name of rx-array-carriers is notified at state change";
+ }
+ leaf state{
+ type leafref{
+ path "/user-plane-configuration/rx-array-carriers/state";
+ }
+ description
+ "state of rx-array-carriers is notified at state change";
+ }
+ }
+ }
+
+// top level container
+
+ container user-plane-configuration {
+ description "top level container for user plane configuration";
+
+ uses uplane-conf-group;
+
+ }
+
+ //notification statement
+ notification tx-array-carriers-state-change {
+ description
+ "Notification used to inform about state change of tx-array-carriers";
+ uses tx-array-notification-group;
+ }
+ notification rx-array-carriers-state-change {
+ description
+ "Notification used to inform about state change of tx-array-carriers";
+
+ uses rx-array-notification-group;
+ }
+}