Initial commit of the O1 simulator framework.
[sim/o1-interface.git] / ntsimulator / yang / o-ran-beamforming.yang
diff --git a/ntsimulator/yang/o-ran-beamforming.yang b/ntsimulator/yang/o-ran-beamforming.yang
new file mode 100644 (file)
index 0000000..b733430
--- /dev/null
@@ -0,0 +1,502 @@
+module o-ran-beamforming {
+  yang-version 1.1;
+  namespace "urn:o-ran:beamforming:1.0";
+  prefix "o-ran-bf";
+
+  import o-ran-uplane-conf {
+    prefix "up";
+  }
+
+  import o-ran-module-cap {
+    prefix "mcap";
+  }
+
+  import o-ran-compression-factors {
+    prefix "cf";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the beamforming capabilitites of an O-RU.
+    Only O-RUs that support beamforming shall support this module.
+
+    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-06-19" {
+    description
+      "version 1.1.1
+
+      1) adding possibilities to provide more compression types for beamforming";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-04-01" {
+    description
+      "version 1.1.0
+
+      1) corrested xPATH boolean check from TRUE to true";
+
+    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";
+  }
+
+
+  feature MODIFY-BF-CONFIG {
+    description
+      "This feature indicates that the O-RU supports an optional feature to
+      modify beamforming configuration information";
+  }
+
+  typedef beam-reference {
+    type leafref {
+      path "/o-ran-bf:beamforming-config/o-ran-bf:per-band-config/o-ran-bf:beam-information/o-ran-bf:beamforming-properties/o-ran-bf:beam-id";
+    }
+    description
+      "This type is used by data models that need to reference a beam.";
+  }
+
+
+  grouping beamforming-parameters {
+    leaf max-number-of-beam-ids {
+      type uint16;
+      mandatory true;
+      description
+        "Maximum number of supported Beam ID assigned to domain beamforming control";
+    }
+
+    leaf initial-beam-id {
+      type uint16;
+      mandatory true;
+      description
+        "First Beam ID that can be used for addressing of domain beams";
+    }
+
+    description "Group of common beamforming parameters";
+  }
+
+  grouping granularity-parameters {
+    leaf frequency-granularity {
+      type enumeration {
+        enum CC {
+          description
+            "Frequency granularity: per carrier component";
+        }
+
+        enum BAND {
+          description
+            "Frequency granularity: per band";
+        }
+      }
+      mandatory true;
+      description "Supported time granularity of time-domain beamforming.";
+    }
+
+    leaf time-granularity {
+      type enumeration {
+        enum SLOT {
+          description
+            "Time granularity: per slot";
+        }
+
+        enum SYMBOL {
+          description
+            "Time granularity: per symbol";
+        }
+      }
+      mandatory true;
+      description "Supported time granularity of time-domain beamforming.";
+    }
+    description "";
+  }
+
+  grouping array-lists {
+    description
+      "Grouping for array lists";
+
+    leaf-list tx-array {
+      type leafref {
+        path "/up:user-plane-configuration/up:tx-arrays/up:name";
+      }
+      description "tx arrays belonging to this band number";
+    }
+    leaf-list rx-array {
+      type leafref {
+        path "/up:user-plane-configuration/up:rx-arrays/up:name";
+      }
+      description "rx arrays belonging to this band number";
+    }
+  }
+
+  grouping static-properties {
+    description
+      "Grouping for static beamforming properties";
+
+    leaf rt-bf-weights-update-support {
+      type boolean;
+      description
+        "The parameter informs if O-RU supports real time beamforming weights update through C-Plane messaging";
+    }
+
+    choice beamforming-type {
+      case frequency {
+        container frequency-domain-beams {
+          when "../rt-bf-weights-update-support = 'true'";
+          uses beamforming-parameters;
+          uses cf:compression-details;
+
+          list additional-compression-method-supported {
+            key "iq-bitwidth compression-type";
+            uses cf:compression-details;
+
+            description
+              "List of additional supported compression methods by O-RU";
+          }
+
+          description "";
+        }
+        description "Set of parameters valid for O-RU, that supports beamforming in frequency domain.";
+      }
+
+      case time {
+        container time-domain-beams {
+          when "../rt-bf-weights-update-support = 'true'";
+          uses beamforming-parameters;
+          uses granularity-parameters;
+          uses cf:compression-details;
+
+          list additional-compression-method-supported {
+            key "iq-bitwidth compression-type";
+            uses cf:compression-details;
+
+            description
+              "List of additional supported compression methods by O-RU";
+          }
+
+          description "";
+        }
+        description "Set of parameters valid for O-RU, that supports beamforming in time domain.";
+      }
+
+      case hybrid {
+        container hybrid-beams {
+          when "../rt-bf-weights-update-support = 'true'";
+          uses beamforming-parameters;
+          uses granularity-parameters;
+          uses cf:compression-details;
+
+          list additional-compression-method-supported {
+            key "iq-bitwidth compression-type";
+            uses cf:compression-details;
+
+            description
+              "List of additional supported compression methods by O-RU";
+          }
+
+          description "";
+        }
+        description "Set of parameters valid for O-RU, that supports hybrid beamforming - in both time and frequency domain.";
+      }
+      description
+        "This value indicates beamforming type supported by O-RU";
+    }
+
+    leaf number-of-beams {
+      type uint16;
+      description
+        "This value indicates the max number of beam patterns O-RU can generate
+        and apply to the signal of each O-RU port (both DL and UL).
+        This value is equivalent to the maximum number of used beam IDs.";
+    }
+  }
+
+  grouping beamforming-property {
+    description
+      "Grouping for beamforming property";
+
+    leaf beam-type {
+      type enumeration {
+        enum COARSE {
+          description "the beam-id corresponds to a coarse beam";
+        }
+        enum FINE {
+          description "the beam-id corresponds to a fine beam";
+        }
+      }
+      description
+        "This value indicates the beam resolution.";
+    }
+
+    leaf beam-group-id {
+      type uint16;
+      description
+        "Beams with same beamGroupsID can be transmitted simultaneously.";
+    }
+
+    leaf-list coarse-fine-beam-relation {
+      type beam-reference;
+      description
+        "List of related coarse/fine beam.";
+    }
+
+    leaf-list neighbour-beams {
+      type beam-reference;
+      description
+        "A list of neighbor beams which might restrict co-scheduling due
+        to interference.";
+    }
+  }
+
+  grouping beamforming-properties-element {
+    description
+      "Grouping for beamforming-properties element";
+
+    leaf beam-id {
+      type uint16;
+      description
+        "This value indicates the beam ID whose beamforming properties are
+        described in the container.";
+    }
+
+    container beamforming-property {
+      description
+        "Structure containing single set of beamforming properties.";
+
+      uses beamforming-property;
+    }
+  }
+
+  grouping band-num {
+    description
+      "Band information for the beamforming
+       related to the band number from module capabilities";
+
+    leaf band-number {
+      type leafref {
+        path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+      }
+      description
+        "band information for the beamforming information
+         related to the band number of module capabilities";
+    }
+  }
+
+  grouping per-band-config-element {
+    description
+      "Grouping for per band config element";
+
+    uses band-num;
+    uses array-lists;
+
+    container static-properties {
+      description
+        "the static beamforming related information";
+
+      uses static-properties;
+    }
+
+    container beam-information {
+      description
+        "Beam information which exposes beamforming related O-RU capabilities.";
+      leaf number-of-beamforming-properties {
+        type uint16;
+        description
+          "This parameter indicates the number of beamFormingProperties entries.";
+      }
+
+      list beamforming-properties {
+        key beam-id;
+        description
+          "Array for the beamforming properties at O-RU.
+          These parameters can be used by the beamforming control by the NETCONF client.
+          'numberOfBeamformingProperties' indicaets the size of the array.";
+
+        uses beamforming-properties-element;
+      }
+    }
+  }
+
+  grouping operational-properties {
+    description
+      "Grouping for operational properties";
+
+    leaf number-of-writeable-beamforming-files {
+      type uint8  {
+        range "1 .. max";
+      }
+      mandatory true;
+      description
+        "This leaf indicates the maximum number of writeable beamforming files
+        containing beamweights and/or attributes that the O-RU can store, taking
+        into account the maximum number of beam-IDs as defined by 3GPP
+        TS38.214 v15.x.x";
+    }
+
+    leaf update-bf-non-delete {
+      type boolean;
+      default false;
+      description
+        "When set to TRUE, indicates that an O-RU supports the capability
+        to apply the modified beamforming weight information by using rpc
+        activate-beamforming-weight without deletion of tx-array-carriers and
+        rx-array-carriers in advance, i.e., to a deactivated carrier";
+    }
+
+    leaf persistent-bf-files {
+      type boolean;
+      default false;
+      description
+        "When set to TRUE, indicates that the O-RU supports the capability
+         to store the modified beamforming weight information file in the
+         reset persistent memory";
+    }
+  }
+
+  grouping beamforming-supported-type {
+    description
+      "Grouping for type of beamforming supported";
+
+    leaf beamforming-trough-attributes-supported {
+      type boolean;
+      description
+        "Informs if beamforming can be controlled providing attributes to O-RU
+          (like angles, beamwidth).";
+    }
+
+    leaf beamforming-trough-ue-channel-info-supported {
+      type boolean;
+      description
+        "Informs if beamforming can be controlled by UE information.";
+    }
+  }
+
+  grouping beamforming-config {
+    description
+      "Grouping for beamforming configuration";
+
+    list per-band-config {
+      key band-number;
+      description "beamforming information per band";
+
+      uses per-band-config-element;
+    }
+
+    container ue-specific-beamforming {
+      presence
+        "Indicates that the O-RU supports optional Section Type '6' Fields
+        (used for sending channel information for a specific UE)";
+      config false;
+      description
+        "Information related to supput by the O-RU of Section Type 6 for
+        signalling UE-specific channel information to the O-RU";
+      leaf max-number-of-ues {
+        type uint8;
+        description
+          "Indicates tha maximum number of UE -specific channel information
+          data sets supported by the O-RU";
+      }
+    }
+    container operational-properties {
+      if-feature MODIFY-BF-CONFIG;
+      description "properties for dynamic beam weight/attribute support";
+
+      uses operational-properties;
+    }
+  }
+
+  container beamforming-config {
+    config false;
+    description
+      "A set of configuration data for the O-RU's beam forming functionality";
+
+    uses beamforming-config;
+    uses beamforming-supported-type;
+  }
+
+
+  rpc activate-beamforming-config {
+    if-feature MODIFY-BF-CONFIG;
+    description
+      "rpc to activate beamforming config information by indicating the file
+      stored in the folder O-RAN/beam-weights in advance";
+    input {
+      leaf beamforming-config-file {
+        type string;
+        mandatory true;
+        description
+          "file name stored in O-RAN/beamforming/ folder is indicated";
+      }
+
+      uses band-num;
+    }
+    output {
+      leaf status {
+        type enumeration {
+          enum ACCEPTED {
+            description "O-RU has accepted the beamforming weight/attribute file";
+          }
+          enum REJECTED {
+            description
+              "O-RU has rejected the beamforming weight/attribute file. The O-RU
+              should then use the default beamforming file.";
+          }
+        }
+        mandatory true;
+        description "Status of activation of beamforming config information";
+      }
+      leaf error-message {
+        when "../status='REJECTED'";
+        type string;
+        description
+          "Detailed error Message when the status is rejected, e.g.,
+           because new beam forming file is attempted to be applied to a
+           carrier which is still active, or the beam-id does not exist.";
+      }
+    }
+  }
+
+
+  //notification statement
+  notification beamforming-information-update {
+    uses band-num;
+    description
+      "this notification indicates that the beamforming properties are updated for particular band";
+  }
+}