Most Powerful Open Source ERP

o-ran-delay-management-ru-cpri.yang

  • Last Update:2024-05-17
  • Version:
  • Language:
module o-ran-delay-management-ru-cpri{
  yang-version 1.1;
  namespace "urn:o-ran:delay-ru-cpri:1.0";
  prefix "o-ran-delay-ru-cpri";

  import ietf-interfaces{
    prefix "if";
  }

  import o-ran-interfaces-cpri {
    prefix "o-ran-int-cpri";
  }

  organization "O-RAN Alliance";

  contact
    "www.o-ran.org";

  description
    "This module covers off aspects of O-DU to O-RU delay management,
    including config data related to O-RU transmission and reception
    windows.

    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.
    
    How to:
        Step1: DU get delay profile(ru-delay-profile) by means of rpc get-config
        Step2: DU get t14 from CPRI master(HUB or itself)
        Step3: DU cal the delay config
        Step4: DU config cpri link related paras(ru-delay-config-cpri-link-related) to RU, 
               by means of rpc edit-config.
        Step5: DU config data flow delay config(ru-delay-config-data-flow-related) to RU,
               by means of rpc edit-config.
    
    ";

  revision "2020-07-03" {
    description
      "version 1.1.0

      1) create

    reference "ORAN-WG4.M.0-v01.00";
  }
  
  typedef radio-technology {
    type enumeration{
        enum COMMON {
          description "COMMON radio types in this RU use the same ru-delay-profile-radio-related ";
        }
        enum NR {
          description "NR is supported.";
        }
        enum LTE {
          description "LTE is supported.";
        }
        enum NBIoT {
          description "NBIoT is supported.";
        }
    }
    description
      "Radio technology, where COMMON means there is no delay difference between technologys.";
  }

  typedef bandwidth {
    type uint32 {
      range "0 | 200 | 1400 | 3000 | 5000 | 10000 | 15000 | 20000 | 25000 |
            30000 | 40000 | 50000 | 60000 | 70000 | 80000 | 90000 | 100000
            | 200000 | 400000" ;
    }
    units kilohertz;
    description
      "transmission bandwidth configuration in units of kHz -
      covering NBIoT through to New Radio - see 38.104.
      Besides, bandwidth = 0 means bandwidth doesn't lead to difference here.
     ";
  }

  grouping delay-related-radio-feature {
    description
      "Delay related radio feature";

    leaf radio-technology {
      type radio-technology;
      description
        "radio technology name";
    }
    leaf bandwidth {
      type bandwidth;
      description
        "transmission bandwidth configuration in units of kHz -
        covering NBIoT through to New Radio - see 38.104";
    }
    leaf subcarrier-spacing {
      type uint32 {
        range "0 .. 240000 ";
      }
      units Hertz;
      description 
        "subcarrier spacing in Hz. 
        Normally, 15000 30000 60000 ... is used. Besides, 0 means it doesn't lead to difference";
    }
  }
  

  grouping ru-delay-profile-radio-related {
    description
      "Grouping for RRU delay profile which may be related to radio feature";

    leaf t2a {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "RRU Access Main DownLink Time Delay ";
    }

    leaf ta3 {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "RRU Access Main UpLink Time Delay ";
    }

    leaf t-cal-rru-dl-max {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "RRU's maximum DL Delay compensation ";
    }
    
    leaf t-cal-rru-ul-max {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "RRU's maximum UL Delay compensation ";
    }
  }

  grouping ru-delay-profile-common {
    description
      "Grouping for RRU delay profile which is identical in the O-RU";

    leaf t-offset {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "CPRI delay from R2 to R3, ref to CPRI V7.0";
    }
  }
  
  grouping ru-delay-profile-cascade-related {
    description
      "Grouping for RRU delay profile which are related to cpri cascade";

    leaf tbdelay-dl {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "CPRI DL passthrough delay";
    }
    leaf tbdelay-ul {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "CPRI UL passthrough delay";
    }
    leaf N {
      type uint32;
      mandatory true;
      units nanoseconds;
      description "CPRI delay para N, ref to CPRI V7.0";
    }
  }
    

  container ru-delay-profile{
    config false;
    description
      "RU delay profile";

    list ru-delay-profile-list-radio-related {
      key "radio-technology bandwidth subcarrier-spacing";
      config false;
      description
        "Delay paras related with radio feature,
         1) When radio-technology = COMMON, RU only have one set of radio related para defined.
         2) When radio-technology != COMMON, DU can get a list of para set, 
            with key (radio-technology bandwidth subcarrier-spacing) for each.
         3) Detailed examples:
            case a: O-RU only have one set of delay paras,.
                    COMMON  0  0  t2a ta3 ...
            case b: LTE use one set of delay paras, NR use another set of paras.
                    LTE 0 0 ...
                    NR  0 0 ...
            case c: LTE NR use 2 set of delay paras...
                    LTE   5000 15000 ...
                    LTE  10000 15000 ...
                    NR  100000 30000 ...
                    ...
            ...
            etc.
        ";

      uses delay-related-radio-feature;
      uses ru-delay-profile-radio-related;
    }
    
    uses ru-delay-profile-common;
  }

  container ru-delay-config-cpri-link-related{
    description
      "CPRI link related config";

    list CPRI-link-related-config {
      key "port-name";
      description
        "Array of structures containing sets of parameters for delay management.";

      leaf port-name {
        type leafref {
          path '/if:interfaces/if:interface/o-ran-int-cpri:cpri-interface/o-ran-int-cpri:port-reference/o-ran-int-cpri:port-number';
        }
        mandatory true;
        description
          "The delay configuration is performed on the primary fiber and the 
         secondary/standby fiber";
      }
    
      leaf t12 {
        type uint32;
        mandatory true;
        units nanoseconds;
        description "t12, from original CPRI master R1 to RU's R2";
      }
      
      leaf t34 {
        type uint32;
        mandatory true;
        units nanoseconds;
        description "t34, from RU's R3 original CPRI master R4";
      }
            
      leaf TR1-offset {
        type int32;
        mandatory false;
        units Tc;
        description "Offset of CPRI frame header to GPS time,unit is CPRI chip, 1/3.84MHz";
      }
    }
  }

  container ru-delay-config-data-flow-related{
    description
      "Data flow related config.
       Each data flow is described seperately, with accordance to the global IQ data flow management.
       DL, UL is described seperately, because DL and UL my use different eaxc-id.
      ";

    list dl_cal_ru_list {
      key "eaxc-id";
      description
        "Ru DL cal delay cfg";

      leaf eaxc-id {
        type uint16;
        mandatory true;
        description
          "eaxc-id, which represents data flow of 1 specific carrier antenna";
      }
    
      leaf t_cal_dl {
        type uint32;
        mandatory true;
        units nanoseconds;
        description "dl cal delay cfg, for data flow of 1 specific carrier antenna";
      }
      
      leaf DL-offset {
        type int32;
        mandatory true;
        units Tc;
        description "Offset of IQ frame header to CPRI frame header,unit is CPRI chip, 1/3.84MHz";
      }
    }
    list ul_cal_ru_list {
      key "eaxc-id";
      description
        "Ru UL cal delay cfg";

      leaf eaxc-id {
        type uint16;
        mandatory true;
        description
          "eaxc-id, which represents data flow of 1 specific carrier antenna";
      }
    
      leaf t_cal_ul {
        type uint32;
        mandatory true;
        units nanoseconds;
        description "ul cal delay cfg, for data flow of 1 specific carrier antenna";
      }
    }

  }
  
}