Bug fix.
[sim/o1-interface.git] / ntsimulator / yang / o-ran / ru-fh / o-ran-beamforming.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             key "iq-bitwidth compression-type";
192             uses cf:compression-details;
193
194             description
195               "List of additional supported compression methods by O-RU";
196           }
197
198           description "";
199         }
200         description "Set of parameters valid for O-RU, that supports beamforming in frequency domain.";
201       }
202
203       case time {
204         container time-domain-beams {
205           when "../rt-bf-weights-update-support = 'true'";
206           uses beamforming-parameters;
207           uses granularity-parameters;
208           uses cf:compression-details;
209
210           list additional-compression-method-supported {
211             key "iq-bitwidth compression-type";
212             uses cf:compression-details;
213
214             description
215               "List of additional supported compression methods by O-RU";
216           }
217
218           description "";
219         }
220         description "Set of parameters valid for O-RU, that supports beamforming in time domain.";
221       }
222
223       case hybrid {
224         container hybrid-beams {
225           when "../rt-bf-weights-update-support = 'true'";
226           uses beamforming-parameters;
227           uses granularity-parameters;
228           uses cf:compression-details;
229
230           list additional-compression-method-supported {
231             key "iq-bitwidth compression-type";
232             uses cf:compression-details;
233
234             description
235               "List of additional supported compression methods by O-RU";
236           }
237
238           description "";
239         }
240         description "Set of parameters valid for O-RU, that supports hybrid beamforming - in both time and frequency domain.";
241       }
242       description
243         "This value indicates beamforming type supported by O-RU";
244     }
245
246     leaf number-of-beams {
247       type uint16;
248       description
249         "This value indicates the max number of beam patterns O-RU can generate
250         and apply to the signal of each O-RU port (both DL and UL).
251         This value is equivalent to the maximum number of used beam IDs.";
252     }
253   }
254
255   grouping beamforming-property {
256     description
257       "Grouping for beamforming property";
258
259     leaf beam-type {
260       type enumeration {
261         enum COARSE {
262           description "the beam-id corresponds to a coarse beam";
263         }
264         enum FINE {
265           description "the beam-id corresponds to a fine beam";
266         }
267       }
268       description
269         "This value indicates the beam resolution.";
270     }
271
272     leaf beam-group-id {
273       type uint16;
274       description
275         "Beams with same beamGroupsID can be transmitted simultaneously.";
276     }
277
278     leaf-list coarse-fine-beam-relation {
279       type beam-reference;
280       description
281         "List of related coarse/fine beam.";
282     }
283
284     leaf-list neighbour-beams {
285       type beam-reference;
286       description
287         "A list of neighbor beams which might restrict co-scheduling due
288         to interference.";
289     }
290   }
291
292   grouping beamforming-properties-element {
293     description
294       "Grouping for beamforming-properties element";
295
296     leaf beam-id {
297       type uint16;
298       description
299         "This value indicates the beam ID whose beamforming properties are
300         described in the container.";
301     }
302
303     container beamforming-property {
304       description
305         "Structure containing single set of beamforming properties.";
306
307       uses beamforming-property;
308     }
309   }
310
311   grouping band-num {
312     description
313       "Band information for the beamforming
314        related to the band number from module capabilities";
315
316     leaf band-number {
317       type leafref {
318         path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
319       }
320       description
321         "band information for the beamforming information
322          related to the band number of module capabilities";
323     }
324   }
325
326   grouping cap-group {
327     description
328       "Capabilities group grouping";
329
330     leaf capabilities-group {
331       type leafref {
332         path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
333       }
334       mandatory true;
335       description
336         "Capabilities group identification number to which it refers.";
337     }
338
339   }
340
341   grouping per-band-config-element {
342     description
343       "Grouping for per band config element";
344
345     uses band-num;
346     uses array-lists;
347
348     container static-properties {
349       description
350         "the static beamforming related information";
351
352       uses static-properties;
353     }
354
355     container beam-information {
356       description
357         "Beam information which exposes beamforming related O-RU capabilities.";
358       leaf number-of-beamforming-properties {
359         type uint16;
360         description
361           "This parameter indicates the number of beamFormingProperties entries.";
362       }
363
364       list beamforming-properties {
365         key beam-id;
366         description
367           "Array for the beamforming properties at O-RU.
368           These parameters can be used by the beamforming control by the NETCONF client.
369           'numberOfBeamformingProperties' indicaets the size of the array.";
370
371         uses beamforming-properties-element;
372       }
373     }
374   }
375
376   grouping operational-properties {
377     description
378       "Grouping for operational properties";
379
380     leaf number-of-writeable-beamforming-files {
381       type uint8  {
382         range "1 .. max";
383       }
384       mandatory true;
385       description
386         "This leaf indicates the maximum number of writeable beamforming files
387         containing beamweights and/or attributes that the O-RU can store, taking
388         into account the maximum number of beam-IDs as defined by 3GPP
389         TS38.214 v15.x.x";
390     }
391
392     leaf update-bf-non-delete {
393       type boolean;
394       default false;
395       description
396         "When set to TRUE, indicates that an O-RU supports the capability
397         to apply the modified beamforming weight information by using rpc
398         activate-beamforming-weight without deletion of tx-array-carriers and
399         rx-array-carriers in advance, i.e., to a deactivated carrier";
400     }
401
402     leaf persistent-bf-files {
403       type boolean;
404       default false;
405       description
406         "When set to TRUE, indicates that the O-RU supports the capability
407          to store the modified beamforming weight information file in the
408          reset persistent memory";
409     }
410   }
411
412   grouping beamforming-supported-type {
413     description
414       "Grouping for type of beamforming supported";
415
416     leaf beamforming-trough-attributes-supported {
417       type boolean;
418       config false;
419       description
420         "Informs if beamforming can be controlled providing attributes to O-RU
421           (like angles, beamwidth).";
422     }
423
424     leaf beamforming-trough-ue-channel-info-supported {
425       type boolean;
426       config false;
427       description
428         "Informs if beamforming can be controlled by UE information.";
429     }
430   }
431
432   grouping beamforming-config {
433     description
434       "Grouping for beamforming configuration";
435
436     list per-band-config {
437       key band-number;
438       config false;
439       // [ast] libyang does not accept referencing deprecated leafs from non-deprecated elements
440       // status deprecated;
441       description "beamforming information per band";
442       uses per-band-config-element;
443     }
444
445     list capabilities-groups {
446       key capabilities-group;
447       description
448         "Capabilities groups identification number assigned to be referenced by operations
449          and notifications.
450          This also help to group particular beamforming capabilities and bind it with arrays";
451
452       leaf capabilities-group {
453         type uint16;
454         description
455           "Capabilities group identification number. Number which is used just for reference in RPC
456            and notification";
457       }
458       uses per-band-config-element;
459     }
460
461     container ue-specific-beamforming {
462       presence
463         "Indicates that the O-RU supports optional Section Type '6' Fields
464         (used for sending channel information for a specific UE)";
465       config false;
466       description
467         "Information related to supput by the O-RU of Section Type 6 for
468         signalling UE-specific channel information to the O-RU";
469       leaf max-number-of-ues {
470         type uint8;
471         description
472           "Indicates tha maximum number of UE -specific channel information
473           data sets supported by the O-RU";
474       }
475     }
476     container operational-properties {
477       if-feature MODIFY-BF-CONFIG;
478       config false;
479       description "properties for dynamic beam weight/attribute support";
480
481       uses operational-properties;
482     }
483   }
484
485   grouping beam-tilt-configuration {
486     description "grouping for beam-tilt feature";
487     list predefined-beam-tilt-offset {
488       if-feature BEAM-TILT;
489       key capabilities-group;
490       description "Configuration of the predefined-beam-tilt-offset per capabilities-group";
491       leaf capabilities-group {
492         type leafref {
493           path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
494           require-instance false;
495         }
496         mandatory true;
497         description
498           "Capabilities group identification number for which
499           the predefined-beam-tilt-offset relates to";
500       }
501       leaf elevation-tilt-offset-angle {
502         type int16 {
503           range "-90..90";
504         }
505         units degrees;
506         default 0;
507         description
508           "Value 0 represents the default service area of the predefined-beams
509           in elevation domain, i.e. no tilt offset.
510
511           Values smaller than 0 represents an up-shift of the default service area
512           towards the zenith (i.e., corresponding to a decrease in zenith angle) and
513           values larger than 0 represent a down-shift of the default service area
514           away from the zenith (i.e., corresponding to an increase in zenith angle).
515
516           If the value is greater than the maximum supported angle, then the maximum
517           angle is used for configuration.
518           If the value is less than the minimum supported angle, then the minimum
519           angle is used for configuration.
520           The actual angle used is (angle DIV granularity) * granularity.
521
522           Any O-RU which is reset using the o-ran-operations:reset RPC shall reset
523           its offset angle to its default value.";
524       }
525       leaf azimuth-tilt-offset-angle {
526         type int16 {
527           range "-90..90";
528         }
529         units degrees;
530         default 0;
531         description
532           "Value 0 represents the default service area of the predefined-beams
533           in azimuth domain, i.e., no tile offset.
534
535           Azimuth tilt offset angle, represents counter-clockwise rotation around
536           z-axis. I.e., assuming view from the UE (observation of the O-RU
537           from the front), value larger than 0 and smaller than 0
538           respectively represent right-shifted and left-shifted of the default
539           service area in azimuth domain.
540
541           If the value is greater than the maximum supported angle, then the maximum
542           angle is used for configuration.
543           If the value is less than the minimum supported angle, then the minimum
544           angle is used for configuration.
545           The actual angle used is (angle DIV granularity) * granularity.
546
547           Any O-RU which is reset using the o-ran-operations:reset RPC shall reset
548           its offset angle to its default value.";
549       }
550     }
551   }
552
553   grouping beam-tilt-state {
554     description
555       "Grouping for beam tilt state";
556
557     list predefined-beam-tilt-offset-information {
558       key capabilities-group;
559       config false;
560       description
561         "Information which exposes predefined-beam-tilt-offset related O-RU capabilities.";
562       leaf capabilities-group {
563         type leafref {
564           path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
565         }
566         mandatory true;
567         description
568           "Capabilities group identification number for which
569           the predefined-beam-tilt-offset-information relates to";
570       }
571       leaf elevation-tilt-offset-granularity {
572         type uint8 {
573           range "0..30";
574         }
575         units Degrees;
576         mandatory true;
577         description
578           "Indication of the supported granularity for the
579           predefined-beam-tilt-offset in elevation domain.
580
581           Value 0 represents that the O-RU doesn't support
582           the predefined-beam-tilt-offset in elevation domain.";
583       }
584       leaf azimuth-tilt-offset-granularity {
585         type uint8 {
586           range "0..30";
587         }
588         units Degrees;
589         mandatory true;
590         description
591           "Indication of the supported granularity for the
592           predefined-beam-tilt-offset in azimuth domain.
593
594           Value '0' represents that the O-RU doesn't support
595           the predefined-beam-tilt-offset in azimuth domain.";
596       }
597       leaf minimum-supported-elevation-tilt-offset {
598         type int16 {
599           range "-90..0";
600         }
601         units Degrees;
602         mandatory true;
603         description
604           "The minimum value which can be configured for
605           'elevation-tilt-offset-angle'.";
606       }
607       leaf maximum-supported-elevation-tilt-offset {
608         type int16 {
609           range "0..90";
610         }
611         units Degrees;
612         mandatory true;
613         description
614           "The maximum value which can be configured for
615           'elevation-tilt-offset-angle'.";
616       }
617       leaf minimum-supported-azimuth-tilt-offset {
618         type int16 {
619           range "-90..0";
620         }
621         units Degrees;
622         mandatory true;
623         description
624           "The minimum value which can be configured for
625           'azimuth-tilt-offset-angle'.";
626       }
627       leaf maximum-supported-azimuth-tilt-offset {
628         type int16 {
629           range "0..90";
630         }
631         units Degrees;
632         mandatory true;
633         description
634           "The maximum value which can be configured for
635           'azimuth-tilt-offset-angle'.";
636       }
637       leaf run-time-tilt-offset-supported {
638         type boolean;
639         mandatory true;
640         description
641           "If 'run-time-tilt-offset-supported' is FALSE, changing the values in
642           'predefined-beam-tilt-offset' for a specific band shall be allowed only
643           if all 'tx-array-carriers' and 'rx-array-carriers' corresponding
644           to the band are INACTIVE.";
645       }
646     }
647
648   }
649
650   grouping beam-tilt-report {
651     description
652       "Grouping for beam tilt report";
653
654     list predefined-beam-tilt-state {
655       key capabilities-group;
656       config false;
657       description
658         "Information which exposes state of predefined-beam-tilt-offset.";
659       leaf capabilities-group {
660         type leafref {
661           path "/o-ran-bf:beamforming-config/o-ran-bf:capabilities-groups/o-ran-bf:capabilities-group";
662         }
663         mandatory true;
664         description
665           "Capabilities group identification number for which
666           the predefined-beam-tilt-state relates to";
667       }
668       leaf elevation-tilt-offset-angle {
669         type int16 {
670           range "-90..90";
671         }
672         units Degrees;
673         mandatory true;
674         description
675           "Value 'zero' represents the default service area of the
676           predefined-beams in elevation domain.
677
678           Values smaller than 0 represents an up-shift of the default service area
679           towards the zenith (i.e., corresponding to a decrease in zenith angle) and
680           values larger than 0 represent a down-shift of the default service area
681           away from the zenith (i.e., corresponding to an increase in zenith angle).";
682       }
683       leaf azimuth-tilt-offset-angle {
684         type int16 {
685           range "-90..90";
686         }
687         units Degrees;
688         mandatory true;
689         description
690           "Value 'zero' represents the default service area of the
691           predefined-beams in azimuth domain.
692
693           Azimuth tilt offset angle, represents counter-clockwise rotation around
694           z-axis. I.e., assuming view from the UE (observation of the O-RU from
695           the front), value larger than 'zero' and smaller than 'zero'
696           respectively represent right-shifted and left-shifted of the default
697           service area in azimuth domain.";
698       }
699     }
700
701   }
702
703   container beamforming-config {
704     config false;
705     description
706       "A set of configuration data for the O-RU's beam forming functionality";
707
708     uses beamforming-config;
709     uses beamforming-supported-type;
710     container beam-tilt {
711       if-feature BEAM-TILT;
712       description "container for pre-defined beam tilt feature";
713       uses beam-tilt-state;
714       uses beam-tilt-report;
715     }
716   }
717
718
719   rpc activate-beamforming-config {
720     if-feature MODIFY-BF-CONFIG;
721     description
722       "rpc to activate beamforming config information by indicating the file
723       stored in the folder O-RAN/beam-weights in advance";
724     input {
725       leaf beamforming-config-file {
726         type string;
727         mandatory true;
728         description
729           "file name stored in O-RAN/beamforming/ folder is indicated";
730       }
731
732       uses band-num;
733     }
734     output {
735       leaf status {
736         type enumeration {
737           enum ACCEPTED {
738             description "O-RU has accepted the beamforming weight/attribute file";
739           }
740           enum REJECTED {
741             description
742               "O-RU has rejected the beamforming weight/attribute file. The O-RU
743               should then use the default beamforming file.";
744           }
745         }
746         mandatory true;
747         description "Status of activation of beamforming config information";
748       }
749       leaf error-message {
750         when "../status='REJECTED'";
751         type string;
752         description
753           "Detailed error Message when the status is rejected, e.g.,
754            because new beam forming file is attempted to be applied to a
755            carrier which is still active, or the beam-id does not exist.";
756       }
757     }
758   }
759
760   rpc activate-beamforming-config-by-capability-group {
761     if-feature MODIFY-BF-CONFIG;
762     description
763       "rpc to activate beamforming config information by indicating the file
764       stored in the folder O-RAN/beam-weights in advance";
765     input {
766       leaf beamforming-config-file {
767         type string;
768         mandatory true;
769         description
770           "file name stored in O-RAN/beamforming/ folder is indicated";
771       }
772
773       uses cap-group;
774     }
775     output {
776       leaf status {
777         type enumeration {
778           enum ACCEPTED {
779             description "O-RU has accepted the beamforming weight/attribute file";
780           }
781           enum REJECTED {
782             description
783               "O-RU has rejected the beamforming weight/attribute file. The O-RU
784               should then use the default beamforming file.";
785           }
786         }
787         mandatory true;
788         description "Status of activation of beamforming config information";
789       }
790       leaf error-message {
791         when "../status='REJECTED'";
792         type string;
793         description
794           "Detailed error Message when the status is rejected, e.g.,
795            because new beam forming file is attempted to be applied to a
796            carrier which is still active, or the beam-id does not exist.";
797       }
798     }
799   }
800
801
802   rpc modify-predefined-beam-tilt-offset {
803     if-feature BEAM-TILT;
804     description
805       "rpc to trigger the modification of the predefined beam tilt offset";
806     input {
807       uses beam-tilt-configuration;
808     }
809     output {
810       leaf status {
811         type enumeration {
812           enum ACCEPTED {
813             description "O-RU has accepted the predefind beamtilt offset configuration";
814           }
815           enum REJECTED {
816             description
817               "O-RU has rejected the predefind beamtilt offset configuration.";
818           }
819         }
820         mandatory true;
821         description "Status of acceptance of pre-defined beamtilt offset configuration";
822       }
823       leaf error-message {
824         when "../status='REJECTED'";
825         type string;
826         description
827           "Detailed error message when the pre-defined beam tilt configuration
828           is rejected, e.g., used when 'run-time-tilt-offset-supported' is FALSE and the
829           NETCONF client is attempting to modify the beam tilt on a band where
830           one or more array-carriers are still ACTIVE.";
831       }
832     }
833   }
834
835
836   //notification statement
837   notification beamforming-information-update {
838     uses band-num;
839     description
840       "this notification indicates that the beamforming properties are updated for particular band";
841   }
842
843   notification capability-group-beamforming-information-update {
844     uses cap-group;
845     description
846       "this notification indicates that the beamforming properties are updated for particular band
847        or capability group";
848   }
849
850   notification predefined-beam-tilt-offset-complete {
851     if-feature BEAM-TILT;
852     uses beam-tilt-report;
853     description
854       "this notification indicates that the re-generation of the predefined
855       beams is completed";
856   }
857 }