Refactor folder structure.
[sim/o1-interface.git] / ntsimulator / yang / o-ran / ru-fh / o-ran-uplane-conf.yang
1 module o-ran-uplane-conf {
2   yang-version 1.1;
3   namespace "urn:o-ran:uplane-conf:1.0";
4   prefix "o-ran-uplane-conf";
5
6   import o-ran-processing-element {
7     prefix "o-ran-pe";
8   }
9
10   import ietf-interfaces {
11     prefix "if";
12   }
13
14   import o-ran-module-cap {
15     prefix "mcap";
16   }
17
18   import o-ran-compression-factors {
19     prefix "cf";
20   }
21
22   organization "O-RAN Alliance";
23
24   contact
25     "www.o-ran.org";
26
27   description
28     "This module defines the module capabilities for
29     the O-RAN Radio Unit U-Plane configuration.
30
31     Copyright 2019 the O-RAN Alliance.
32
33     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
34     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36     ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
37     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43     POSSIBILITY OF SUCH DAMAGE.
44
45     Redistribution and use in source and binary forms, with or without
46     modification, are permitted provided that the following conditions are met:
47
48     * Redistributions of source code must retain the above copyright notice,
49     this list of conditions and the above disclaimer.
50     * Redistributions in binary form must reproduce the above copyright notice,
51     this list of conditions and the above disclaimer in the documentation
52     and/or other materials provided with the distribution.
53     * Neither the Members of the O-RAN Alliance nor the names of its
54     contributors may be used to endorse or promote products derived from
55     this software without specific prior written permission.";
56
57   revision "2019-04-01" {
58     description
59       "version 1.1.0
60
61       1) removed redundant LAA import";
62
63     reference "ORAN-WG4.M.0-v01.00";
64   }
65
66   revision "2019-02-04" {
67     description
68       "version 1.0.0
69
70       1) imported model from xRAN
71       2) changed namespace and reference from xran to o-ran";
72
73     reference "ORAN-WG4.M.0-v01.00";
74   }
75
76   typedef polarisation_type {
77     type enumeration {
78       enum MINUS_45 {
79         description "MINUS_45";
80       }
81       enum ZERO {
82         description "ZERO";
83       }
84       enum PLUS_45 {
85         description "PLUS_45";
86       }
87       enum PLUS_90 {
88         description "PLUS_90";
89       }
90     }
91     description "Type definition for polarisations";
92   }
93
94   grouping laa-carrier-config {
95     description "Carrier Configuration for support of LAA. ";
96     leaf ed-threshold-pdsch {
97       type int8;
98       units dBm;
99       description
100         "This value indicates Energy Detection(ED) threshold for LBT for PDSCH and for measurements in dBm.";
101     }
102
103     leaf ed-threshold-drs {
104       type int8;
105       units dBm;
106       description
107         "This value indicates Energy Detection(ED) threshold for LBT for DRS in dBm.";
108     }
109
110     leaf tx-antenna-ports {
111       type uint8;
112       description
113         "This value indicates Tx antenna ports for DRS (1, 2, 4)";
114     }
115
116     leaf transmission-power-for-drs {
117       type int8;
118       units decibels;
119       description
120         "This value indicates offset of Cell specific reference Signal(CRS) power to reference signal power (dB).
121         DRS signal consists of CRS, PSS, SSS, and optionally CSI-RS.";
122     }
123
124     leaf dmtc-period {
125       type enumeration {
126         enum FORTY {
127           description
128             "40 ms";
129         }
130         enum EIGHTY {
131           description
132             "80 ms";
133         }
134         enum ONE-HUNDRED-SIXTY {
135           description
136             "160 ms";
137         }
138       }
139       units milliseconds;
140       description
141         "This value indicates DRS measurement timing configuration (DMTC) period in ms";
142     }
143
144     leaf dmtc-offset {
145       type uint8;
146       units subframes;
147       description
148         "This value indicates dmtc offset in Subframes.";
149     }
150
151     leaf lbt-timer {
152       type uint16;
153       units milliseconds;
154       description
155         "This value indicates LBT Timer in milliseconds.";
156     }
157
158     list max-cw-usage-counter {
159       when "/mcap:module-capability/mcap:band-capabilities[mcap:band-number = '46']/mcap:sub-band-info/mcap:self-configure = 'true'";
160       key "priority";
161       description "";
162       leaf priority {
163         type enumeration {
164           enum P1 {
165             description "priority 1";
166           }
167           enum P2 {
168             description "priority 2";
169           }
170           enum P3 {
171             description "priority 3";
172           }
173           enum P4 {
174             description "priority 4";
175           }
176         }
177         description "This value provides the priority class traffic for which the counter is calculated.";
178       }
179
180         leaf counter-value {
181           type uint8 {
182             range "1..8";
183           }
184           description "This value indicates the maximum value of counter
185           which shows how many max congestion window value is used for backoff
186           number of priority class traffic. This value is defined at 3GPP 36.213
187           section 15.1.3 as K.";
188         }
189       }
190   }
191
192   grouping  eaxc {
193     description
194       "One eAxC identifier (eAxC ID) comprises a band and sector
195       identifier (BandSector_ID), a component-carrier identifier (CC_ID) and a
196       spatial stream identifier (RU_Port_ID).
197
198       In this version of the specification, one eAxC contains only one spatial
199       stream (i.e. one beam per subcarrier) at a time.
200
201       Bit allocation is subdivided as follows:
202       *    O_DU_Port_ID: Used to differentiate processing units at O-DU
203       *    BandSector_ID: Aggregated cell identifier
204       *    CC_ID: distinguishes Carrier Components
205       *    RU_Port_ID: Used to differentiate spatial streams or beams on the O-RU
206
207       The bitwidth of each of the above fields is variable this model is supposed to check
208         if we are occpying bits continuously but we do not have to occupy all 16 bits";
209
210
211     leaf o-du-port-bitmask {
212       type uint16;
213       mandatory true;
214       description
215         "mask for eaxc-id bits used to encode O-DU Port ID";
216     }
217
218     leaf band-sector-bitmask {
219       type uint16;
220       mandatory true;
221       description
222         "mask for eaxc-id bits used to encode the band sector ID";
223     }
224
225     leaf ccid-bitmask {
226       type uint16;
227       mandatory true;
228       description
229         "mask for eaxc-id bits used to encode the component carrier id";
230     }
231
232     leaf ru-port-bitmask {
233       type uint16;
234       mandatory true;
235       description
236         "mask for eaxc-id bits used to encode the O-RU Port ID";
237     }
238
239     leaf eaxc-id {
240       type uint16;
241       mandatory true;
242       description
243         "encoded value of eaxcid to be read by CU-Plane";
244     }
245   }
246
247   grouping parameters {
248     description
249       "Grouping of all parameters common between UL and DL";
250
251     leaf name {
252       type string;
253       mandatory true;
254       description "Unique name of array antenna";
255     }
256
257     leaf number-of-rows {
258       type uint16;
259       mandatory true;
260       description "Number of rows array elements are shaped into - M";
261     }
262
263     leaf number-of-columns {
264       type uint16;
265       mandatory true;
266       description "Number of columns array elements are shaped into - N";
267     }
268
269     leaf number-of-array-layers {
270       type uint8;
271       mandatory true;
272       description "Number of array layers array elements are shaped into - Q";
273     }
274
275     leaf horizontal-spacing {
276       type decimal64 {
277             fraction-digits 5;
278         }
279       units Meter;
280
281       description "Average distance between centers of nearby AE in horizontal direction (in array coordinates system)";
282     }
283
284     leaf vertical-spacing{
285       type decimal64 {
286             fraction-digits 5;
287         }
288       units Meter;
289
290       description "Average distance between centers of nearby AE in vertical direction (in array coordinates system)";
291     }
292
293     container normal-vector-direction {
294       description
295         "Counter-clockwise rotation around z and y axis.";
296
297       leaf azimuth-angle{
298         type decimal64 {
299           fraction-digits 4;
300           }
301         units Degrees;
302
303         description "Azimuth angle, counter-clockwise rotation around z-axis. Value 'zero' points to broad-side, value '90' points to y-axis";
304       }
305        leaf zenith-angle{
306          type decimal64 {
307           fraction-digits 4;
308           }
309         units Degrees;
310
311         description "Zenith angle, counter-clockwise rotation around y-axis. Value 'zero' points to zenith, value '90' points to horizon";
312        }
313     }
314
315     container leftmost-bottom-array-element-position {
316       description "Structure describing position of leftmost, bottom array element.";
317       leaf x {
318         type decimal64 {
319           fraction-digits 4;
320           }
321         units Meter;
322
323         description "X dimension of position of leftmost, bottom array element";
324       }
325
326       leaf y {
327         type decimal64 {
328           fraction-digits 4;
329           }
330         units Meter;
331
332         description "Y dimension of position of leftmost, bottom array element";
333       }
334
335       leaf z {
336         type decimal64 {
337           fraction-digits 4;
338           }
339         units Meter;
340
341         description "Z dimension of position of leftmost, bottom array element";
342       }
343     }
344     list polarisations {
345       key "p";
346       min-elements 1;
347       max-elements 2;
348
349       description
350         "List of supported polarisations.";
351
352       leaf p {
353       type uint8;
354       mandatory true;
355       description
356         "Polarisation index. See CUS-plane";
357       }
358
359       leaf polarisation {
360         type polarisation_type;
361         mandatory true;
362         description "Type of polarisation supported by array.";
363       }
364     }
365     leaf band-number {
366       type leafref {
367         path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
368       }
369       mandatory true;
370       description
371         "This parameter informing which frequency band particular antenna
372          array is serving for.
373          Intended use is to deal with multiband solutions.";
374     }
375   }
376
377   grouping array-choice {
378     choice antenna-type {
379       case tx {
380         leaf tx-array-name {
381           type leafref {
382             path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:tx-arrays/o-ran-uplane-conf:name";
383           }
384
385           description
386             "Leafref to tx array if such is choosen";
387         }
388       }
389       case rx {
390         leaf rx-array-name {
391           type leafref {
392             path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:rx-arrays/o-ran-uplane-conf:name";
393           }
394
395           description
396             "Leafref to rx array if such is choosen";
397         }
398       }
399       description
400         "Choice for antenna type";
401     }
402     description
403       "Elements which groups choice for antenna type";
404   }
405
406   grouping scs-config {
407     description
408       "It groups all parameters related to SCS configuration";
409
410     leaf frame-structure {
411       type uint8;
412
413       description
414         "This parameter defines the frame structure. The first 4 bits define the FFT/iFFT size
415         being used for all IQ data processing related to this message.
416         The second 4 bits define the sub carrier spacing as well as the number of slots per 1ms sub-frame
417         according to 3GPP TS 38.211, taking for completeness also 3GPP TS 36.211 into account";
418     }
419
420     leaf cp-type {
421       type enumeration {
422         enum NORMAL {
423           description
424             "Normal cyclic prefix";
425         }
426
427         enum EXTENDED {
428           description
429             "Extended cyclic prefix";
430         }
431       }
432
433       description
434         "Provides type of CP (cyclic prefix) if section type 3 is not used or type of CP cannot be determined from cpLength.";
435     }
436
437     leaf cp-length {
438       type uint16;
439       units Ts;
440       mandatory true;
441       description
442         "Used for symbol 0 for NR & LTE, and symbol 7*2u for NR.
443         See CUS-plane";
444     }
445
446     leaf cp-length-other {
447       type uint16;
448       units Ts;
449       mandatory true;
450       description
451         "Used for other symbols than by cp-length above";
452     }
453
454     leaf offset-to-absolute-frequency-center {
455       type int32;
456       mandatory true;
457       description
458         "This provides value of freqOffset to be used if section type 3 is not used. See freqOffset in CUS-plane.";
459     }
460
461     list number-of-prb-per-scs {
462       key scs;
463       description
464         "List of configured for each SCS that will be used.";
465
466       leaf scs {
467         type mcap:scs-config-type;
468         description
469           "Value corresponds to SCS values defined for frameStructure in C-plane.
470           Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
471       }
472
473       leaf number-of-prb {
474         type uint16;
475         mandatory true;
476         description
477           "Determines max number of PRBs that will be used in all sections per one symbol.
478           This is affecting allocation of resources to endpoint. Value shall not exceed constrains
479           defined by max-prb-per-symbol of endpoint type. In addition sum (over all used epoints
480           within a group of endpoints sharing resources) of number-of-prb rounded up to
481           nearest value from prb-capacity-allocation-granularity shall not exceed max-prb-per-symbol of the group.";
482       }
483     }
484   }
485
486   grouping common-array-carrier-elements {
487     description
488       "This grouping containes all common parameters for tx-array-carriers and rx-array-carriers";
489
490     leaf absolute-frequency-center {
491       type uint32;
492       mandatory true;
493       description
494         "Absolute Radio Frequency Channel Number - indirectly indicates RF center carrier frequency of signal.
495         Reflected in arfcn.";
496     }
497
498     leaf center-of-channel-bandwidth {
499       type uint64;
500           units Hz;
501       mandatory true;
502       description
503         "Center frequency of channel bandwidth in Hz. Common for all numerologies.";
504     }
505
506     leaf channel-bandwidth {
507       type uint64;
508       units Hz;
509       mandatory true;
510
511       description
512         "Width of carrier given in Hertz";
513     }
514
515     leaf active {
516       type enumeration {
517         enum INACTIVE {
518               description
519                 "carrier does not provide signal - transmission is disabled";
520             }
521         enum SLEEP{
522               description
523                 "carrier is fully configured and was active but is energy saving mode";
524             }
525         enum ACTIVE{
526               description
527                 "carrier is fully configured and properly providing the signal";
528             }
529       }
530       default INACTIVE;
531
532       description
533         "Indicates if transmission is enabled for this array carriers. Note that Netconf server uses state parameter
534         to indicate actual state of array carriers operation. When array carriers is in sleep status,
535         Netconf server rejects all other operation request to tx-array-carriers object except either request to change from sleep
536         to active status or delete MO operation (see 4.8) to the object.";
537     }
538
539     leaf state {
540       type enumeration {
541         enum DISABLED {
542           description
543             "array carrier is not active - transmission of signal is disabled.";
544         }
545         enum BUSY {
546           description
547             "array carrier is processing an operation requested by change of active parameter.
548             When array carriers is BUSY the transmission of signal is not guaranteed.";
549         }
550         enum READY {
551           description
552             "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
553         }
554       }
555       config false;
556       mandatory true;
557       description
558         "Indicates state of array carriers activation operation";
559     }
560
561     leaf type {
562       type enumeration {
563         enum NR {
564               description
565                 "5G technology";
566             }
567         enum LTE {
568               description
569                 "LTE technology";
570         }
571       }
572       config false;
573       mandatory true;
574       description
575         "Type of carrier. Indicates array-carrier technology.";
576     }
577     leaf duplex-scheme {
578       type enumeration {
579         enum TDD {
580               description
581                 "TDD scheme";
582             }
583         enum FDD {
584               description
585                 "FDD scheme";
586         }
587       }
588       config false;
589
590       description
591         "Type of duplex scheme O-RU supports.";
592
593     }
594   }
595
596   grouping endpoint-section-capacity {
597     leaf max-control-sections-per-data-section {
598       type uint8 {
599         range "1..12";
600       }
601       description
602         "Max number of C-plane sections (C-plane section is part of C-plane message that carries “section fields”)
603         referring to same U-plane section (U-plane section is part of U-plane message that carries
604         “section header fields” and “PRB fields”) that is supported by endpoint.
605         Note that additional limitations specific for each section type apply on top of this number.";
606     }
607     leaf max-sections-per-symbol {
608       type uint16;
609       description
610         "Max number of sections within one symbol that can be processed by endpoint
611         or processed collectively by group of endpoints sharing capacity";
612     }
613     leaf max-sections-per-slot {
614       type uint16;
615       description
616         "Max number of sections within one slot that can be processed by endpoint
617         or processed collectively by group of endpoints sharing capacity.";
618     }
619
620     description
621       "Parameters describing section capacity where section is undestood as number of different sectionId values";
622   }
623
624   grouping endpoint-beam-capacity {
625     leaf max-beams-per-symbol {
626       type uint16;
627       description
628         "Max number of beams within one symbol that can be processed by endpoint
629         or processed collectively by group of endpoints sharing capacity";
630     }
631     leaf max-beams-per-slot {
632       type uint16;
633       description
634         "Max number of beams within one slot that can be processed by endpoint
635         or processed collectively by group of endpoints sharing capacity";
636     }
637
638     description
639       "Parameters describing beam capacity where number of beams is understood as number of different beamId values";
640   }
641
642   grouping endpoint-prb-capacity {
643     leaf max-prb-per-symbol {
644       type uint16;
645       description
646         "Max number of prbs within one symbol that can be processed by endpoint
647         or processed collectively by group of endpoints sharing capacity";
648     }
649
650     description
651       "Attributes presenting processing capacity related to PRB.";
652   }
653
654   grouping endpoint-numerology-capacity {
655     leaf max-numerologies-per-symbol {
656       type uint16;
657       description
658         "Max number of numerologies within one symbol that can be processed by endpoint
659         or processed collectively by group of endpoints sharing capacity";
660     }
661
662     description
663       "Attributes presenting processing capacity related to numerology.";
664   }
665
666   grouping uplane-conf-group {
667     list low-level-tx-links {
668       key name;
669       description
670         "Object model for low-level-tx-link configuration";
671
672       leaf name {
673         type string;
674         description
675           "Unique name of low-level-tx-link object.";
676       }
677
678       leaf processing-element {
679         type leafref {
680           path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
681         }
682         mandatory true;
683         description
684           "Contains name of processing-element to be used as transport by low-level-tx-link";
685       }
686
687       leaf tx-array-carrier {
688         type leafref {
689           path "/user-plane-configuration/tx-array-carriers/name";
690         }
691         mandatory true;
692         description
693           "Contains name of tx-array-carriers MO to be used as transport by low-level-tx-link";
694       }
695
696       leaf low-level-tx-endpoint {
697         type leafref {
698           path "/user-plane-configuration/low-level-tx-endpoints/name";
699         }
700         mandatory true;
701         description
702           "Contains name of low-level-tx-endpoints MO to be used as transport by low-level-tx-link";
703       }
704     }
705
706     list low-level-rx-links {
707       key name;
708       description
709         "Object model for low-level-rx-links configuration";
710
711       leaf name {
712         type string;
713
714         description
715           "Unique name of low-level-rx-links object.";
716       }
717
718       leaf processing-element {
719         type leafref {
720           path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
721         }
722         mandatory true;
723         description
724           "Contains name of processing-element to be used as transport by LowLevelTxLink";
725       }
726
727       leaf rx-array-carrier {
728         type leafref {
729           path "/user-plane-configuration/rx-array-carriers/name";
730         }
731         mandatory true;
732
733         description
734           "Contains name of rx-array-carriers MO to be used as transport by low-level-rx-links";
735       }
736
737       leaf low-level-rx-endpoint {
738         type leafref {
739           path "/user-plane-configuration/low-level-rx-endpoints/name";
740         }
741         mandatory true;
742
743         description
744           "Contains name of low-level-rx-endpoints MO to be used as transport by low-level-rx-links";
745       }
746
747       leaf user-plane-uplink-marking {
748         type leafref {
749           path "/o-ran-pe:processing-elements/o-ran-pe:enhanced-uplane-mapping/o-ran-pe:uplane-mapping/o-ran-pe:up-marking-name";
750         }
751         description
752           "Parameter to set the non-default marking for user-plane";
753       }
754     }
755
756     list endpoint-types {
757       key "id";
758       config false;
759       description
760         "Properties of endpoint that are common to multiple endpoints if such are identified";
761
762       leaf id {
763         type uint16;
764         description
765           "Identifies type of endpoints sharing same properties. Values shall start with 0 and shall be allocated without gaps.";
766       }
767
768       list supported-section-types {
769         key "section-type";
770         description
771           "Indicates section types and extensions endpoints of this type support";
772
773         leaf section-type {
774           type uint8;
775
776           description
777             "This parameter determines the characteristics of U-plane data to be transferred or received from a beam with one pattern id.";
778         }
779
780         leaf-list supported-section-extensions {
781           type uint8;
782
783           description
784             "This parameter provides the extension types supported by the O-RU
785             which provides additional parameters specific to the subject data extension";
786         }
787       }
788
789       leaf-list supported-frame-structures {
790         type uint8;
791
792         description
793           "List of supported values of frame structure";
794       }
795
796       leaf managed-delay-support {
797         type enumeration {
798           enum MANAGED {
799             description
800               "Time managed delays are supported";
801           }
802
803           enum NON_MANAGED {
804             description
805               "Non time managed delays are not supported";
806           }
807
808           enum BOTH {
809             description
810               "Both time managed and non time managed delays are supported";
811           }
812         }
813
814         description
815           "Type of delay supported by the endpoint";
816       }
817
818       leaf max-numerology-change-duration {
819         type uint16 {
820           range "0..10000";
821         }
822
823         units Ts;
824         description
825           "Maximum gap of endpoint operation that will be caused by changing of numerology.
826           This time is required for reconfiguration and flushing of pipes.";
827       }
828
829       uses endpoint-section-capacity;
830       uses endpoint-beam-capacity;
831       uses endpoint-prb-capacity;
832
833       leaf-list prb-capacity-allocation-granularity {
834         type uint16;
835
836         description
837           "List of capacity allocation steps. O-RU allocates PRB capacity rounding it up to nearest value N
838           from prb-capacity-allocation-granularity such that M >= number-of-prb-per-scs.
839           See also number-of-prb-per-scs/number-of-prb.";
840       }
841
842       uses endpoint-numerology-capacity;
843     }
844
845     list endpoint-capacity-sharing-groups {
846       key "id";
847       config false;
848       description
849         "Represents groups of endpoints that share capacity. Depending on O-RU implementation,
850         processing resources that handle CU-plane (e.g. memory to keep sections and beams)
851         could be allocated per endpoint or shared between several endpoints.
852         To address this O-RU shall reports own capability per endpoint (see endpoint-types)
853         and per group of endpoints sharing capacity.
854         If endpoint is in multiple groups then resulting constraint is minimum over all groups.
855         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.
856 ";
857
858       leaf id {
859         type uint16;
860         description
861           "Identifies group of endpoints sharing resources.
862           Values shall start with 0 and shall be allocated without gaps.";
863       }
864       uses endpoint-section-capacity;
865       uses endpoint-beam-capacity;
866       uses endpoint-prb-capacity;
867       uses endpoint-numerology-capacity;
868
869       leaf max-endpoints {
870         type uint16;
871         description
872           "Indicates how many endpoints in the group can be used4 simultaneously";
873       }
874       leaf max-managed-delay-endpoints {
875         type uint16;
876         description
877           "Number of endpoints supporting managed delay that can be used (configured for use) at a time";
878       }
879       leaf max-non-managed-delay-endpoints {
880         type uint16;
881         description
882           "Number of endpoints supporting non-managed delay that can be used (configured for use) at a time";
883       }
884     }
885
886     list static-low-level-tx-endpoints {
887       key name;
888       config false;
889       description
890         "Object model for static-low-level-tx-endpoints configuration";
891
892       leaf name {
893         type string;
894
895         description
896           "Unique name of static-low-level-tx-endpoints object.";
897       }
898
899       leaf-list restricted-interfaces {
900         type leafref {
901           path "/if:interfaces/if:interface/if:name";
902         }
903         description
904           "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
905       }
906
907       leaf array {
908         type leafref {
909           path "/user-plane-configuration/tx-arrays/name";
910         }
911         mandatory true;
912         description
913           "Contains distname of tx-arrays, particular low-level-tx-endpoints is in hardware dependency with.
914           Note: single instance of tx-arrays can be referenced by many instances of low-level-tx-endpoints
915           (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
916       }
917
918       leaf endpoint-type {
919         type leafref {
920           path "../../endpoint-types/id";
921         }
922
923         description
924           "Reference to endpoint type capabilities list element supported by this endpoint";
925       }
926
927       leaf-list capacity-sharing-groups {
928         type leafref {
929           path "../../endpoint-capacity-sharing-groups/id";
930         }
931
932         description
933           "Reference to capacities of sharing-groups supported by this endpoint";
934       }
935     }
936
937     list static-low-level-rx-endpoints {
938       key name;
939       config false;
940       description
941         "Object model for static-low-level-rx-endpoints configuration";
942
943       leaf name {
944         type string;
945
946         description
947           "Unique name of static-low-level-rx-endpoints object.";
948       }
949
950       leaf-list restricted-interfaces {
951         type leafref {
952           path "/if:interfaces/if:interface/if:name";
953         }
954         description
955           "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
956       }
957
958       leaf array {
959         type leafref {
960           path "/user-plane-configuration/rx-arrays/name";
961         }
962         mandatory true;
963         description
964           "Contains distname of rx-arrays, particular low-level-rx-endpoints is in hardware dependency with.
965           Note: single instance of rx-arrays can be referenced by many instances of low-level-rx-endpoints
966           (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
967       }
968
969       leaf endpoint-type {
970         type leafref {
971           path "../../endpoint-types/id";
972         }
973
974         description
975           "Reference to endpoint type capabilities list element supported by this endpoint";
976       }
977
978       leaf-list capacity-sharing-groups {
979         type leafref {
980           path "../../endpoint-capacity-sharing-groups/id";
981         }
982
983         description
984           "Reference to capacities of sharing-groups supported by this endpoint";
985       }
986     }
987
988     list low-level-tx-endpoints {
989       key "name";
990
991       description
992         "Object model for low-level-tx-endpoints configuration - augmented static-low-level-tx-endpoints by local-address
993         which cannot be added to static low-level-tx-endpoints as we cannot have modificable element in static object";
994
995       leaf name {
996         type leafref {
997           path "/user-plane-configuration/static-low-level-tx-endpoints/name";
998           require-instance false;
999         }
1000         mandatory true;
1001
1002         description
1003           "Unique name of low-level-tx-endpoint object. Reference to static object";
1004       }
1005
1006       container compression {
1007         presence
1008           "This container shall exists to avoid missaligned compression
1009           methods between devices";
1010
1011         description
1012           "Container which consists of global configurable parameters for compression";
1013
1014         uses cf:compression-details;
1015       }
1016
1017       uses scs-config;
1018
1019       container e-axcid {
1020         uses eaxc;
1021
1022         description
1023           "Contains local address of low level TX endpoint offered by Netconf server.";
1024       }
1025
1026
1027
1028     }
1029
1030     list low-level-rx-endpoints {
1031       key name;
1032
1033       description
1034         "Object model for low-level-rx-endpoint configuration - augmented static-low-level-rx-endpoints by local-address
1035         which cannot be added to static low-level-rx-endpoints as we cannot have modificable element in static object";
1036
1037       leaf name {
1038         type leafref {
1039           path "/user-plane-configuration/static-low-level-rx-endpoints/name";
1040           require-instance false;
1041         }
1042         mandatory true;
1043
1044         description
1045           "Unique name of low-level-rx-endpoint object. Reference to static object";
1046       }
1047
1048       container compression {
1049         description
1050           "Container which consists of global configurable parameters for compression";
1051
1052         uses cf:compression-details;
1053       }
1054
1055       uses scs-config;
1056
1057       list ul-fft-sampling-offsets {
1058         key scs;
1059         description
1060           "List of FFT sampling offsets configured for each SCS that will be used.
1061           Client shall configure one element for each SCS that will be used.";
1062
1063         leaf scs {
1064           type mcap:scs-config-type;
1065           description
1066             "Value corresponds to SCS values defined for frameStructure in C-plane
1067             Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
1068         }
1069
1070         leaf ul-fft-sampling-offset {
1071           type uint16;
1072
1073           units Ts;
1074           description
1075             "Determines time advance of capture window for FFT.
1076             Value represents time advance of capture window start in relation to the end of CP. Unit is Ts.
1077             Note: value of this parameter is usually set to '0' (zero) for PRACH channels.
1078             Any phase offset resulting from the non-zero value of this parameter is handled in O-DU.";
1079         }
1080       }
1081
1082       container e-axcid {
1083         uses eaxc;
1084
1085         description
1086           "Contains local address of low level RX endpoint offered by Netconf server.";
1087       }
1088
1089       leaf non-time-managed-delay-enabled {
1090         type boolean;
1091         default false;
1092         description
1093           "Tells if non time managed delay shall be enabled";
1094       }
1095     }
1096
1097     list tx-array-carriers {
1098       key name;
1099       description
1100         "Object model for tx-array-carriers configuration";
1101
1102       leaf name {
1103         type string;
1104
1105         description
1106           "Unique name of tx-array-carriers object.";
1107       }
1108
1109       uses common-array-carrier-elements;
1110
1111       leaf band-number {
1112         if-feature mcap:LAA;
1113         type leafref {
1114           path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
1115           require-instance false;
1116         }
1117         description
1118           "This parameter informing which frequency band particular antenna
1119            array is serving for.
1120            Intended use is to deal with multiband solutions.";
1121       }
1122
1123       container lte-tdd-frame {
1124         when "(/user-plane-configuration/rx-array-carriers/type = 'LTE') and  (/user-plane-configuration/rx-array-carriers/duplex-scheme = 'TDD')";
1125         description
1126           "Container which consists of global configurable parameters for tdd Frame";
1127
1128         leaf subframe-assignment {
1129           type enumeration {
1130             enum SAO {
1131               description "subframe assignment configuration 0";
1132             }
1133             enum SA1 {
1134               description "subframe assignment configuration 1";
1135             }
1136             enum SA2 {
1137               description "subframe assignment configuration 2";
1138             }
1139             enum SA3 {
1140               description "subframe assignment configuration 3";
1141             }
1142             enum SA4 {
1143               description "subframe assignment configuration 4";
1144             }
1145             enum SA5 {
1146               description "subframe assignment configuration 5";
1147             }
1148               enum SA6 {
1149                 description "subframe assignment configuration 6";
1150             }
1151           }
1152           mandatory true;
1153           description
1154             "Indicates DL/UL subframe configuration as specified in
1155             3GPP TS 36.211 [v15.3.0, table 4.2-2]";
1156         }
1157         leaf special-subframe-pattern {
1158           type enumeration {
1159             enum SPP0 {
1160               description "special subframe pattern configuration 0";
1161             }
1162             enum SPP1 {
1163               description "special subframe pattern configuration 1";
1164             }
1165             enum SPP2 {
1166               description "special subframe pattern configuration 2";
1167             }
1168             enum SPP3 {
1169               description "special subframe pattern configuration 3";
1170             }
1171             enum SPP4 {
1172               description "special subframe pattern configuration 4";
1173             }
1174             enum SPP5 {
1175               description "special subframe pattern configuration 5";
1176             }
1177             enum SPP6 {
1178               description "special subframe pattern configuration 6";
1179             }
1180             enum SPP7 {
1181               description "special subframe pattern configuration 7";
1182             }
1183             enum SPP8 {
1184               description "special subframe pattern configuration 8";
1185             }
1186             enum SPP9 {
1187               description "special subframe pattern configuration 9";
1188             }
1189             enum SPP10 {
1190               description "special subframe pattern configuration 10";
1191             }
1192           }
1193           mandatory true;
1194           description
1195             "Indicates TDD special subframe configuration as in TS 36.211
1196              [v15.3.0, table 4.2-1] ";
1197         }
1198       }
1199
1200       container laa-carrier-configuration {
1201         when "./../band-number = 46";
1202         if-feature mcap:LAA;
1203         description "Container to specify LAA feature related carrier configuration.";
1204         uses laa-carrier-config;
1205       }
1206
1207       leaf gain {
1208         type decimal64 {
1209           fraction-digits 4;
1210         }
1211         units dB;
1212         mandatory true;
1213
1214         description
1215           "Transmission gain in dB. Value applicable to each array element carrier belonging to array carrier.";
1216       }
1217
1218       leaf downlink-radio-frame-offset {
1219         type uint32 {
1220           range 0..12288000;
1221         }
1222         mandatory true;
1223
1224         description
1225           "This parameter is used for offsetting the starting position of 10ms radio frame.
1226           Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
1227           Note2: Unit is 1/1.2288e9 Hz and accuracy is 1/4 Tc. Then, its range is calculated 0..12288000.";
1228       }
1229
1230       leaf downlink-sfn-offset {
1231         type int16 {
1232           range -32768..32767;
1233         }
1234         mandatory true;
1235
1236         description
1237           "This parameter is used for offsetting SFN value.
1238           Unit is in 10ms.
1239           Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
1240       }
1241     }
1242
1243     list rx-array-carriers {
1244       key name;
1245       description
1246         "Object model for rx-array-carriers configuration";
1247
1248           leaf name {
1249             type string;
1250             description
1251             "Unique name of rx-array-carriers object.";
1252       }
1253
1254       uses common-array-carrier-elements;
1255
1256       leaf downlink-radio-frame-offset {
1257         type uint32 {
1258           range 0..12288000;
1259         }
1260         mandatory true;
1261
1262         description
1263           "This parameter is used for offsetting the starting position of 10ms radio frame.
1264           Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
1265           Note2: Unit is 1/1.2288e9 Hz and accuracy is 1/4 Tc. Then, its range is calculated 0..12288000.";
1266       }
1267
1268       leaf downlink-sfn-offset {
1269         type int16 {
1270           range -32768..32767;
1271         }
1272         mandatory true;
1273
1274         description
1275           "This parameter is used for offsetting SFN value.
1276           Unit is in 10ms.
1277           Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
1278       }
1279
1280       leaf gain-correction {
1281         type decimal64 {
1282           fraction-digits 4;
1283
1284         }
1285         units dB;
1286         mandatory true;
1287         description
1288           "Gain correction of RF path linked with array element or array layers";
1289       }
1290
1291       leaf n-ta-offset {
1292         type uint32;
1293         units Tc;
1294         mandatory true;
1295         description
1296           "Value of configurable N-TA offset
1297           units are Tc=~0.5ns=1/1.96608GHz";
1298       }
1299     }
1300
1301     list tx-arrays {
1302       key "name";
1303       config false;
1304       description
1305         "Structure describing TX array parameters";
1306
1307       uses parameters;
1308
1309       leaf max-gain {
1310         type decimal64 {
1311           fraction-digits 4;
1312
1313         }
1314         units dB;
1315         mandatory true;
1316         description
1317           "Max gain of RF path linked with array element (minimum over elements of array) or array layers";
1318       }
1319
1320       leaf independent-power-budget {
1321         type boolean;
1322         mandatory true;
1323         description
1324           "If true then every element of array has own, power budget independent from power budget of other elements.
1325           Else all elements of array that are at same row and column and have same polarization share power budget";
1326       }
1327     }
1328
1329     list rx-arrays {
1330       key "name";
1331       config false;
1332       description "Structure describing RX array parameters";
1333
1334       uses parameters;
1335       container gain-correction-range {
1336             leaf max {
1337           type decimal64 {
1338             fraction-digits 4;
1339           }
1340           units dB;
1341           mandatory true;
1342           description "Array gain correction factor - maximum allowed value";
1343                 }
1344                 leaf min {
1345           type decimal64 {
1346             fraction-digits 4;
1347           }
1348           units dB;
1349           mandatory true;
1350           description "Array gain correction factor - minimum allowed value";
1351                 }
1352
1353         description
1354           "Array gain correction factor";
1355       }
1356     }
1357
1358     list relations {
1359       key "entity";
1360       config false;
1361       description "Structure describing relations between array elements";
1362
1363       leaf entity {
1364         type uint16;
1365
1366         description
1367           "Relation entity. Used as a key for list of relations.";
1368       }
1369
1370       container array1 {
1371         uses array-choice;
1372
1373         description
1374           "Defnes name for first array";
1375       }
1376       container array2 {
1377         uses array-choice;
1378
1379         description
1380           "Defnes name for second array";
1381       }
1382       list types {
1383         key "relation-type";
1384         description
1385           "Defines relation type and pairs for array elements for given arrays";
1386
1387         leaf relation-type {
1388           type enumeration {
1389             enum SHARED {
1390               description "SHARED";
1391             }
1392             enum COALOCATED {
1393               description "COALOCATED";
1394             }
1395           }
1396           description "Type of relation between array elements";
1397         }
1398         list pairs {
1399           key "element-array1";
1400           description
1401             "defines related array elements";
1402
1403           leaf element-array1 {
1404             type uint16;
1405
1406                 description
1407                   "Tells about id of element from array1";
1408           }
1409           leaf element-array2 {
1410             type uint16;
1411
1412                 description
1413                   "Tells about id of element from array2";
1414           }
1415         }
1416       }
1417     }
1418   }
1419
1420   grouping tx-array-notification-group {
1421     list tx-array-carriers{
1422       key name;
1423       description "notification of state change for tx-array-carriers";
1424
1425       leaf name{
1426         type leafref{
1427           path "/user-plane-configuration/tx-array-carriers/name";
1428         }
1429         description
1430           "name of tx-array-carriers is notified at state change";
1431       }
1432       leaf state{
1433         type leafref{
1434           path "/user-plane-configuration/tx-array-carriers/state";
1435         }
1436       description
1437         "state of tx-array-carriers is notified at state change";
1438       }
1439     }
1440   }
1441
1442   grouping rx-array-notification-group {
1443     list rx-array-carriers{
1444       key name;
1445       description
1446         "Notification used to inform about state change of rx-array-carriers";
1447       leaf name{
1448         type leafref{
1449           path "/user-plane-configuration/rx-array-carriers/name";
1450         }
1451         description
1452           "name of rx-array-carriers is notified at state change";
1453       }
1454       leaf state{
1455         type leafref{
1456           path "/user-plane-configuration/rx-array-carriers/state";
1457         }
1458         description
1459           "state of rx-array-carriers is notified at state change";
1460       }
1461     }
1462   }
1463
1464 // top level container
1465
1466   container user-plane-configuration {
1467     description "top level container for user plane configuration";
1468
1469     uses uplane-conf-group;
1470
1471   }
1472
1473   //notification statement
1474   notification tx-array-carriers-state-change {
1475     description
1476       "Notification used to inform about state change of tx-array-carriers";
1477     uses tx-array-notification-group;
1478   }
1479   notification rx-array-carriers-state-change {
1480     description
1481     "Notification used to inform about state change of tx-array-carriers";
1482
1483     uses rx-array-notification-group;
1484   }
1485 }