Support of WG4 OpenFronthaul Management-Plane VES
[scp/oam/modeling.git] / data-model / yang / published / o-ran / ru-fh / o-ran-beamforming@2019-07-03.yang
1 module o-ran-beamforming {
2   yang-version 1.1;
3   namespace "urn:o-ran:beamforming:1.0";
4   prefix "o-ran-bf";
5
6   import o-ran-uplane-conf {
7     prefix "up";
8   }
9
10   import o-ran-module-cap {
11     prefix "mcap";
12   }
13
14   import o-ran-compression-factors {
15     prefix "cf";
16   }
17
18   organization "O-RAN Alliance";
19
20   contact
21     "www.o-ran.org";
22
23   description
24     "This module defines the beamforming capabilitites of an O-RU.
25     Only O-RUs that support beamforming shall support this module.
26
27     Copyright 2019 the O-RAN Alliance.
28
29     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
30     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32     ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
33     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
34     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
35     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
36     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
37     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
39     POSSIBILITY OF SUCH DAMAGE.
40
41     Redistribution and use in source and binary forms, with or without
42     modification, are permitted provided that the following conditions are met:
43
44     * Redistributions of source code must retain the above copyright notice,
45     this list of conditions and the above disclaimer.
46     * Redistributions in binary form must reproduce the above copyright notice,
47     this list of conditions and the above disclaimer in the documentation
48     and/or other materials provided with the distribution.
49     * Neither the Members of the O-RAN Alliance nor the names of its
50     contributors may be used to endorse or promote products derived from
51     this software without specific prior written permission.";
52
53   revision "2019-07-03" {
54     description
55       "version 2.0.0
56
57       1) re-designed/switched from per band to per capabilities-group for
58       addition flexibility
59       2) added in new beam tilt feature
60       3) adding possibilities to provide more compression types for beamforming
61       4) Adding possibility to configure beamforming per capabilities group
62       5) corrected xPATH boolean check from TRUE to true";
63
64     reference "ORAN-WG4.M.0-v02.00";
65   }
66
67   revision "2019-02-04" {
68     description
69       "version 1.0.0
70
71       1) imported model from xRAN
72       2) changed namespace and reference from xran to o-ran";
73
74     reference "ORAN-WG4.M.0-v01.00";
75   }
76
77
78   feature MODIFY-BF-CONFIG {
79     description
80       "This feature indicates that the O-RU supports an optional feature to
81       modify beamforming configuration information";
82   }
83
84   feature BEAM-TILT {
85     description
86       "This feature indicates that the O-RU supports an optional feature to
87       allows to shift beam characteristic of all predefined-beams in elevation
88       and/or azimuth direction (i.e. changing the service area or sector
89       coverage) while preserving the beam adjacency among the beams within
90       the service area ";
91   }
92
93   typedef beam-reference {
94     type leafref {
95       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";
96     }
97     description
98       "This type is used by data models that need to reference a beam.";
99   }
100
101
102   grouping beamforming-parameters {
103     leaf max-number-of-beam-ids {
104       type uint16;
105       mandatory true;
106       description
107         "Maximum number of supported Beam ID assigned to domain beamforming control";
108     }
109
110     leaf initial-beam-id {
111       type uint16;
112       mandatory true;
113       description
114         "First Beam ID that can be used for addressing of domain beams";
115     }
116
117     description "Group of common beamforming parameters";
118   }
119
120   grouping granularity-parameters {
121     leaf frequency-granularity {
122       type enumeration {
123         enum CC {
124           description
125             "Frequency granularity: per carrier component";
126         }
127
128         enum BAND {
129           description
130             "Frequency granularity: per band";
131         }
132       }
133       mandatory true;
134       description "Supported time granularity of time-domain beamforming.";
135     }
136
137     leaf time-granularity {
138       type enumeration {
139         enum SLOT {
140           description
141             "Time granularity: per slot";
142         }
143
144         enum SYMBOL {
145           description
146             "Time granularity: per symbol";
147         }
148       }
149       mandatory true;
150       description "Supported time granularity of time-domain beamforming.";
151     }
152     description "";
153   }
154
155   grouping array-lists {
156     description
157       "Grouping for array lists";
158
159     leaf-list tx-array {
160       type leafref {
161         path "/up:user-plane-configuration/up:tx-arrays/up:name";
162       }
163       description "tx arrays belonging to this band number";
164     }
165     leaf-list rx-array {
166       type leafref {
167         path "/up:user-plane-configuration/up:rx-arrays/up:name";
168       }
169       description "rx arrays belonging to this band number";
170     }
171   }
172
173   grouping static-properties {
174     description
175       "Grouping for static beamforming properties";
176
177     leaf rt-bf-weights-update-support {
178       type boolean;
179       description
180         "The parameter informs if O-RU supports real time beamforming weights update through C-Plane messaging";
181     }
182
183     choice beamforming-type {
184       case frequency {
185         container frequency-domain-beams {
186           when "../rt-bf-weights-update-support = 'true'";
187           uses beamforming-parameters;
188           uses cf:compression-details;
189
190           list additional-compression-method-supported {
191             uses cf:compression-details;
192
193             description
194               "List of additional supported compression methods by O-RU";
195           }
196
197           description "";
198         }
199         description "Set of parameters valid for O-RU, that supports beamforming in frequency domain.";
200       }
201
202       case time {
203         container time-domain-beams {
204           when "../rt-bf-weights-update-support = 'true'";
205           uses beamforming-parameters;
206           uses granularity-parameters;
207           uses cf:compression-details;
208
209           list additional-compression-method-supported {
210             uses cf:compression-details;
211
212             description
213               "List of additional supported compression methods by O-RU";
214           }
215
216           description "";
217         }
218         description "Set of parameters valid for O-RU, that supports beamforming in time domain.";
219       }
220
221       case hybrid {
222         container hybrid-beams {
223           when "../rt-bf-weights-update-support = 'true'";
224           uses beamforming-parameters;
225           uses granularity-parameters;
226           uses cf:compression-details;
227
228           list additional-compression-method-supported {
229             uses cf:compression-details;
230
231             description
232               "List of additional supported compression methods by O-RU";
233           }
234
235           description "";
236         }
237         description "Set of parameters valid for O-RU, that supports hybrid beamforming - in both time and frequency domain.";
238       }
239       description
240         "This value indicates beamforming type supported by O-RU";
241     }
242
243     leaf number-of-beams {
244       type uint16;
245       description
246         "This value indicates the max number of beam patterns O-RU can generate
247         and apply to the signal of each O-RU port (both DL and UL).
248         This value is equivalent to the maximum number of used beam IDs.";
249     }
250   }
251
252   grouping beamforming-property {
253     description
254       "Grouping for beamforming property";
255
256     leaf beam-type {
257       type enumeration {
258         enum COARSE {
259           description "the beam-id corresponds to a coarse beam";
260         }
261         enum FINE {
262           description "the beam-id corresponds to a fine beam";
263         }
264       }
265       description
266         "This value indicates the beam resolution.";
267     }
268
269     leaf beam-group-id {
270       type uint16;
271       description
272         "Beams with same beamGroupsID can be transmitted simultaneously.";
273     }
274
275     leaf-list coarse-fine-beam-relation {
276       type beam-reference;
277       description
278         "List of related coarse/fine beam.";
279     }
280
281     leaf-list neighbour-beams {
282       type beam-reference;
283       description
284         "A list of neighbor beams which might restrict co-scheduling due
285         to interference.";
286     }
287   }
288
289   grouping beamforming-properties-element {
290     description
291       "Grouping for beamforming-properties element";
292
293     leaf beam-id {
294       type uint16;
295       description
296         "This value indicates the beam ID whose beamforming properties are
297         described in the container.";
298     }
299
300     container beamforming-property {
301       description
302         "Structure containing single set of beamforming properties.";
303
304       uses beamforming-property;
305     }
306   }
307
308   grouping band-num {
309     description
310       "Band information for the beamforming
311        related to the band number from module capabilities";
312
313     leaf band-number {
314       type leafref {
315         path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
316       }
317       description
318         "band information for the beamforming information
319          related to the band number of module capabilities";
320     }
321   }
322
323   grouping cap-group {
324     description
325       "Capabilities group grouping";
326
327     leaf capabilities-group {
328       type leafref {
329         path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
330       }
331       mandatory true;
332       description
333         "Capabilities group identification number to which it refers.";
334     }
335
336   }
337
338   grouping per-band-config-element {
339     description
340       "Grouping for per band config element";
341
342     uses band-num;
343     uses array-lists;
344
345     container static-properties {
346       description
347         "the static beamforming related information";
348
349       uses static-properties;
350     }
351
352     container beam-information {
353       description
354         "Beam information which exposes beamforming related O-RU capabilities.";
355       leaf number-of-beamforming-properties {
356         type uint16;
357         description
358           "This parameter indicates the number of beamFormingProperties entries.";
359       }
360
361       list beamforming-properties {
362         key beam-id;
363         description
364           "Array for the beamforming properties at O-RU.
365           These parameters can be used by the beamforming control by the NETCONF client.
366           'numberOfBeamformingProperties' indicaets the size of the array.";
367
368         uses beamforming-properties-element;
369       }
370     }
371   }
372
373   grouping operational-properties {
374     description
375       "Grouping for operational properties";
376
377     leaf number-of-writeable-beamforming-files {
378       type uint8  {
379         range "1 .. max";
380       }
381       mandatory true;
382       description
383         "This leaf indicates the maximum number of writeable beamforming files
384         containing beamweights and/or attributes that the O-RU can store, taking
385         into account the maximum number of beam-IDs as defined by 3GPP
386         TS38.214 v15.x.x";
387     }
388
389     leaf update-bf-non-delete {
390       type boolean;
391       default false;
392       description
393         "When set to TRUE, indicates that an O-RU supports the capability
394         to apply the modified beamforming weight information by using rpc
395         activate-beamforming-weight without deletion of tx-array-carriers and
396         rx-array-carriers in advance, i.e., to a deactivated carrier";
397     }
398
399     leaf persistent-bf-files {
400       type boolean;
401       default false;
402       description
403         "When set to TRUE, indicates that the O-RU supports the capability
404          to store the modified beamforming weight information file in the
405          reset persistent memory";
406     }
407   }
408
409   grouping beamforming-supported-type {
410     description
411       "Grouping for type of beamforming supported";
412
413     leaf beamforming-trough-attributes-supported {
414       type boolean;
415       config false;
416       description
417         "Informs if beamforming can be controlled providing attributes to O-RU
418           (like angles, beamwidth).";
419     }
420
421     leaf beamforming-trough-ue-channel-info-supported {
422       type boolean;
423       config false;
424       description
425         "Informs if beamforming can be controlled by UE information.";
426     }
427   }
428
429   grouping beamforming-config {
430     description
431       "Grouping for beamforming configuration";
432
433     list per-band-config {
434       key band-number;
435       config false;
436       status deprecated;
437       description "beamforming information per band";
438       uses per-band-config-element;
439     }
440
441     list capabilities-groups {
442       key capabilities-group;
443       description
444         "Capabilities groups identification number assigned to be referenced by operations
445          and notifications.
446          This also help to group particular beamforming capabilities and bind it with arrays";
447
448       leaf capabilities-group {
449         type uint16;
450         description
451           "Capabilities group identification number. Number which is used just for reference in RPC
452            and notification";
453       }
454       uses per-band-config-element;
455     }
456
457     container ue-specific-beamforming {
458       presence
459         "Indicates that the O-RU supports optional Section Type '6' Fields
460         (used for sending channel information for a specific UE)";
461       config false;
462       description
463         "Information related to supput by the O-RU of Section Type 6 for
464         signalling UE-specific channel information to the O-RU";
465       leaf max-number-of-ues {
466         type uint8;
467         description
468           "Indicates tha maximum number of UE -specific channel information
469           data sets supported by the O-RU";
470       }
471     }
472     container operational-properties {
473       if-feature MODIFY-BF-CONFIG;
474       config false;
475       description "properties for dynamic beam weight/attribute support";
476
477       uses operational-properties;
478     }
479   }
480
481   grouping beam-tilt-configuration {
482     description "grouping for beam-tilt feature";
483     list predefined-beam-tilt-offset {
484       if-feature BEAM-TILT;
485       key capabilities-group;
486       description "Configuration of the predefined-beam-tilt-offset per capabilities-group";
487       leaf capabilities-group {
488         type leafref {
489           path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
490           require-instance false;
491         }
492         mandatory true;
493         description
494           "Capabilities group identification number for which
495           the predefined-beam-tilt-offset relates to";
496       }
497       leaf elevation-tilt-offset-angle {
498         type int16 {
499           range "-90..90";
500         }
501         units degrees;
502         default 0;
503         description
504           "Value 0 represents the default service area of the predefined-beams
505           in elevation domain, i.e. no tilt offset.
506
507           Values smaller than 0 represents an up-shift of the default service area
508           towards the zenith (i.e., corresponding to a decrease in zenith angle) and
509           values larger than 0 represent a down-shift of the default service area
510           away from the zenith (i.e., corresponding to an increase in zenith angle).
511
512           If the value is greater than the maximum supported angle, then the maximum
513           angle is used for configuration.
514           If the value is less than the minimum supported angle, then the minimum
515           angle is used for configuration.
516           The actual angle used is (angle DIV granularity) * granularity.
517
518           Any O-RU which is reset using the o-ran-operations:reset RPC shall reset
519           its offset angle to its default value.";
520       }
521       leaf azimuth-tilt-offset-angle {
522         type int16 {
523           range "-90..90";
524         }
525         units degrees;
526         default 0;
527         description
528           "Value 0 represents the default service area of the predefined-beams
529           in azimuth domain, i.e., no tile offset.
530
531           Azimuth tilt offset angle, represents counter-clockwise rotation around
532           z-axis. I.e., assuming view from the UE (observation of the O-RU
533           from the front), value larger than 0 and smaller than 0
534           respectively represent right-shifted and left-shifted of the default
535           service area in azimuth domain.
536
537           If the value is greater than the maximum supported angle, then the maximum
538           angle is used for configuration.
539           If the value is less than the minimum supported angle, then the minimum
540           angle is used for configuration.
541           The actual angle used is (angle DIV granularity) * granularity.
542
543           Any O-RU which is reset using the o-ran-operations:reset RPC shall reset
544           its offset angle to its default value.";
545       }
546     }
547   }
548
549   grouping beam-tilt-state {
550     description
551       "Grouping for beam tilt state";
552
553     list predefined-beam-tilt-offset-information {
554       key capabilities-group;
555       config false;
556       description
557         "Information which exposes predefined-beam-tilt-offset related O-RU capabilities.";
558       leaf capabilities-group {
559         type leafref {
560           path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
561         }
562         mandatory true;
563         description
564           "Capabilities group identification number for which
565           the predefined-beam-tilt-offset-information relates to";
566       }
567       leaf elevation-tilt-offset-granularity {
568         type uint8 {
569           range "0..30";
570         }
571         units Degrees;
572         mandatory true;
573         description
574           "Indication of the supported granularity for the
575           predefined-beam-tilt-offset in elevation domain.
576
577           Value 0 represents that the O-RU doesn't support
578           the predefined-beam-tilt-offset in elevation domain.";
579       }
580       leaf azimuth-tilt-offset-granularity {
581         type uint8 {
582           range "0..30";
583         }
584         units Degrees;
585         mandatory true;
586         description
587           "Indication of the supported granularity for the
588           predefined-beam-tilt-offset in azimuth domain.
589
590           Value '0' represents that the O-RU doesn't support
591           the predefined-beam-tilt-offset in azimuth domain.";
592       }
593       leaf minimum-supported-elevation-tilt-offset {
594         type int16 {
595           range "-90..0";
596         }
597         units Degrees;
598         mandatory true;
599         description
600           "The minimum value which can be configured for
601           'elevation-tilt-offset-angle'.";
602       }
603       leaf maximum-supported-elevation-tilt-offset {
604         type int16 {
605           range "0..90";
606         }
607         units Degrees;
608         mandatory true;
609         description
610           "The maximum value which can be configured for
611           'elevation-tilt-offset-angle'.";
612       }
613       leaf minimum-supported-azimuth-tilt-offset {
614         type int16 {
615           range "-90..0";
616         }
617         units Degrees;
618         mandatory true;
619         description
620           "The minimum value which can be configured for
621           'azimuth-tilt-offset-angle'.";
622       }
623       leaf maximum-supported-azimuth-tilt-offset {
624         type int16 {
625           range "0..90";
626         }
627         units Degrees;
628         mandatory true;
629         description
630           "The maximum value which can be configured for
631           'azimuth-tilt-offset-angle'.";
632       }
633       leaf run-time-tilt-offset-supported {
634         type boolean;
635         mandatory true;
636         description
637           "If 'run-time-tilt-offset-supported' is FALSE, changing the values in
638           'predefined-beam-tilt-offset' for a specific band shall be allowed only
639           if all 'tx-array-carriers' and 'rx-array-carriers' corresponding
640           to the band are INACTIVE.";
641       }
642     }
643
644   }
645
646   grouping beam-tilt-report {
647     description
648       "Grouping for beam tilt report";
649
650     list predefined-beam-tilt-state {
651       key capabilities-group;
652       config false;
653       description
654         "Information which exposes state of predefined-beam-tilt-offset.";
655       leaf capabilities-group {
656         type leafref {
657           path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
658         }
659         mandatory true;
660         description
661           "Capabilities group identification number for which
662           the predefined-beam-tilt-state relates to";
663       }
664       leaf elevation-tilt-offset-angle {
665         type int16 {
666           range "-90..90";
667         }
668         units Degrees;
669         mandatory true;
670         description
671           "Value 'zero' represents the default service area of the
672           predefined-beams in elevation domain.
673
674           Values smaller than 0 represents an up-shift of the default service area
675           towards the zenith (i.e., corresponding to a decrease in zenith angle) and
676           values larger than 0 represent a down-shift of the default service area
677           away from the zenith (i.e., corresponding to an increase in zenith angle).";
678       }
679       leaf azimuth-tilt-offset-angle {
680         type int16 {
681           range "-90..90";
682         }
683         units Degrees;
684         mandatory true;
685         description
686           "Value 'zero' represents the default service area of the
687           predefined-beams in azimuth domain.
688
689           Azimuth tilt offset angle, represents counter-clockwise rotation around
690           z-axis. I.e., assuming view from the UE (observation of the O-RU from
691           the front), value larger than 'zero' and smaller than 'zero'
692           respectively represent right-shifted and left-shifted of the default
693           service area in azimuth domain.";
694       }
695     }
696
697   }
698
699   container beamforming-config {
700     config false;
701     description
702       "A set of configuration data for the O-RU's beam forming functionality";
703
704     uses beamforming-config;
705     uses beamforming-supported-type;
706     container beam-tilt {
707       if-feature BEAM-TILT;
708       description "container for pre-defined beam tilt feature";
709       uses beam-tilt-state;
710       uses beam-tilt-report;
711     }
712   }
713
714
715   rpc activate-beamforming-config {
716     if-feature MODIFY-BF-CONFIG;
717     description
718       "rpc to activate beamforming config information by indicating the file
719       stored in the folder O-RAN/beam-weights in advance";
720     input {
721       leaf beamforming-config-file {
722         type string;
723         mandatory true;
724         description
725           "file name stored in O-RAN/beamforming/ folder is indicated";
726       }
727
728       uses band-num;
729     }
730     output {
731       leaf status {
732         type enumeration {
733           enum ACCEPTED {
734             description "O-RU has accepted the beamforming weight/attribute file";
735           }
736           enum REJECTED {
737             description
738               "O-RU has rejected the beamforming weight/attribute file. The O-RU
739               should then use the default beamforming file.";
740           }
741         }
742         mandatory true;
743         description "Status of activation of beamforming config information";
744       }
745       leaf error-message {
746         when "../status='REJECTED'";
747         type string;
748         description
749           "Detailed error Message when the status is rejected, e.g.,
750            because new beam forming file is attempted to be applied to a
751            carrier which is still active, or the beam-id does not exist.";
752       }
753     }
754   }
755
756   rpc activate-beamforming-config-by-capability-group {
757     if-feature MODIFY-BF-CONFIG;
758     description
759       "rpc to activate beamforming config information by indicating the file
760       stored in the folder O-RAN/beam-weights in advance";
761     input {
762       leaf beamforming-config-file {
763         type string;
764         mandatory true;
765         description
766           "file name stored in O-RAN/beamforming/ folder is indicated";
767       }
768
769       uses cap-group;
770     }
771     output {
772       leaf status {
773         type enumeration {
774           enum ACCEPTED {
775             description "O-RU has accepted the beamforming weight/attribute file";
776           }
777           enum REJECTED {
778             description
779               "O-RU has rejected the beamforming weight/attribute file. The O-RU
780               should then use the default beamforming file.";
781           }
782         }
783         mandatory true;
784         description "Status of activation of beamforming config information";
785       }
786       leaf error-message {
787         when "../status='REJECTED'";
788         type string;
789         description
790           "Detailed error Message when the status is rejected, e.g.,
791            because new beam forming file is attempted to be applied to a
792            carrier which is still active, or the beam-id does not exist.";
793       }
794     }
795   }
796
797
798   rpc modify-predefined-beam-tilt-offset {
799     if-feature BEAM-TILT;
800     description
801       "rpc to trigger the modification of the predefined beam tilt offset";
802     input {
803       uses beam-tilt-configuration;
804     }
805     output {
806       leaf status {
807         type enumeration {
808           enum ACCEPTED {
809             description "O-RU has accepted the predefind beamtilt offset configuration";
810           }
811           enum REJECTED {
812             description
813               "O-RU has rejected the predefind beamtilt offset configuration.";
814           }
815         }
816         mandatory true;
817         description "Status of acceptance of pre-defined beamtilt offset configuration";
818       }
819       leaf error-message {
820         when "../status='REJECTED'";
821         type string;
822         description
823           "Detailed error message when the pre-defined beam tilt configuration
824           is rejected, e.g., used when 'run-time-tilt-offset-supported' is FALSE and the
825           NETCONF client is attempting to modify the beam tilt on a band where
826           one or more array-carriers are still ACTIVE.";
827       }
828     }
829   }
830
831
832   //notification statement
833   notification beamforming-information-update {
834     uses band-num;
835     description
836       "this notification indicates that the beamforming properties are updated for particular band";
837   }
838
839   notification capability-group-beamforming-information-update {
840     uses cap-group;
841     description
842       "this notification indicates that the beamforming properties are updated for particular band
843        or capability group";
844   }
845
846   notification predefined-beam-tilt-offset-complete {
847     if-feature BEAM-TILT;
848     uses beam-tilt-report;
849     description
850       "this notification indicates that the re-generation of the predefined
851       beams is completed";
852   }
853 }