Refactor folder structure.
[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-06-19" {
54     description
55       "version 1.1.1
56
57       1) adding possibilities to provide more compression types for beamforming";
58
59     reference "ORAN-WG4.M.0-v01.00";
60   }
61
62   revision "2019-04-01" {
63     description
64       "version 1.1.0
65
66       1) corrested xPATH boolean check from TRUE to true";
67
68     reference "ORAN-WG4.M.0-v01.00";
69   }
70
71   revision "2019-02-04" {
72     description
73       "version 1.0.0
74
75       1) imported model from xRAN
76       2) changed namespace and reference from xran to o-ran";
77
78     reference "ORAN-WG4.M.0-v01.00";
79   }
80
81
82   feature MODIFY-BF-CONFIG {
83     description
84       "This feature indicates that the O-RU supports an optional feature to
85       modify beamforming configuration information";
86   }
87
88   typedef beam-reference {
89     type leafref {
90       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";
91     }
92     description
93       "This type is used by data models that need to reference a beam.";
94   }
95
96
97   grouping beamforming-parameters {
98     leaf max-number-of-beam-ids {
99       type uint16;
100       mandatory true;
101       description
102         "Maximum number of supported Beam ID assigned to domain beamforming control";
103     }
104
105     leaf initial-beam-id {
106       type uint16;
107       mandatory true;
108       description
109         "First Beam ID that can be used for addressing of domain beams";
110     }
111
112     description "Group of common beamforming parameters";
113   }
114
115   grouping granularity-parameters {
116     leaf frequency-granularity {
117       type enumeration {
118         enum CC {
119           description
120             "Frequency granularity: per carrier component";
121         }
122
123         enum BAND {
124           description
125             "Frequency granularity: per band";
126         }
127       }
128       mandatory true;
129       description "Supported time granularity of time-domain beamforming.";
130     }
131
132     leaf time-granularity {
133       type enumeration {
134         enum SLOT {
135           description
136             "Time granularity: per slot";
137         }
138
139         enum SYMBOL {
140           description
141             "Time granularity: per symbol";
142         }
143       }
144       mandatory true;
145       description "Supported time granularity of time-domain beamforming.";
146     }
147     description "";
148   }
149
150   grouping array-lists {
151     description
152       "Grouping for array lists";
153
154     leaf-list tx-array {
155       type leafref {
156         path "/up:user-plane-configuration/up:tx-arrays/up:name";
157       }
158       description "tx arrays belonging to this band number";
159     }
160     leaf-list rx-array {
161       type leafref {
162         path "/up:user-plane-configuration/up:rx-arrays/up:name";
163       }
164       description "rx arrays belonging to this band number";
165     }
166   }
167
168   grouping static-properties {
169     description
170       "Grouping for static beamforming properties";
171
172     leaf rt-bf-weights-update-support {
173       type boolean;
174       description
175         "The parameter informs if O-RU supports real time beamforming weights update through C-Plane messaging";
176     }
177
178     choice beamforming-type {
179       case frequency {
180         container frequency-domain-beams {
181           when "../rt-bf-weights-update-support = 'true'";
182           uses beamforming-parameters;
183           uses cf:compression-details;
184
185           list additional-compression-method-supported {
186             key "iq-bitwidth compression-type";
187             uses cf:compression-details;
188
189             description
190               "List of additional supported compression methods by O-RU";
191           }
192
193           description "";
194         }
195         description "Set of parameters valid for O-RU, that supports beamforming in frequency domain.";
196       }
197
198       case time {
199         container time-domain-beams {
200           when "../rt-bf-weights-update-support = 'true'";
201           uses beamforming-parameters;
202           uses granularity-parameters;
203           uses cf:compression-details;
204
205           list additional-compression-method-supported {
206             key "iq-bitwidth compression-type";
207             uses cf:compression-details;
208
209             description
210               "List of additional supported compression methods by O-RU";
211           }
212
213           description "";
214         }
215         description "Set of parameters valid for O-RU, that supports beamforming in time domain.";
216       }
217
218       case hybrid {
219         container hybrid-beams {
220           when "../rt-bf-weights-update-support = 'true'";
221           uses beamforming-parameters;
222           uses granularity-parameters;
223           uses cf:compression-details;
224
225           list additional-compression-method-supported {
226             key "iq-bitwidth compression-type";
227             uses cf:compression-details;
228
229             description
230               "List of additional supported compression methods by O-RU";
231           }
232
233           description "";
234         }
235         description "Set of parameters valid for O-RU, that supports hybrid beamforming - in both time and frequency domain.";
236       }
237       description
238         "This value indicates beamforming type supported by O-RU";
239     }
240
241     leaf number-of-beams {
242       type uint16;
243       description
244         "This value indicates the max number of beam patterns O-RU can generate
245         and apply to the signal of each O-RU port (both DL and UL).
246         This value is equivalent to the maximum number of used beam IDs.";
247     }
248   }
249
250   grouping beamforming-property {
251     description
252       "Grouping for beamforming property";
253
254     leaf beam-type {
255       type enumeration {
256         enum COARSE {
257           description "the beam-id corresponds to a coarse beam";
258         }
259         enum FINE {
260           description "the beam-id corresponds to a fine beam";
261         }
262       }
263       description
264         "This value indicates the beam resolution.";
265     }
266
267     leaf beam-group-id {
268       type uint16;
269       description
270         "Beams with same beamGroupsID can be transmitted simultaneously.";
271     }
272
273     leaf-list coarse-fine-beam-relation {
274       type beam-reference;
275       description
276         "List of related coarse/fine beam.";
277     }
278
279     leaf-list neighbour-beams {
280       type beam-reference;
281       description
282         "A list of neighbor beams which might restrict co-scheduling due
283         to interference.";
284     }
285   }
286
287   grouping beamforming-properties-element {
288     description
289       "Grouping for beamforming-properties element";
290
291     leaf beam-id {
292       type uint16;
293       description
294         "This value indicates the beam ID whose beamforming properties are
295         described in the container.";
296     }
297
298     container beamforming-property {
299       description
300         "Structure containing single set of beamforming properties.";
301
302       uses beamforming-property;
303     }
304   }
305
306   grouping band-num {
307     description
308       "Band information for the beamforming
309        related to the band number from module capabilities";
310
311     leaf band-number {
312       type leafref {
313         path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
314       }
315       description
316         "band information for the beamforming information
317          related to the band number of module capabilities";
318     }
319   }
320
321   grouping per-band-config-element {
322     description
323       "Grouping for per band config element";
324
325     uses band-num;
326     uses array-lists;
327
328     container static-properties {
329       description
330         "the static beamforming related information";
331
332       uses static-properties;
333     }
334
335     container beam-information {
336       description
337         "Beam information which exposes beamforming related O-RU capabilities.";
338       leaf number-of-beamforming-properties {
339         type uint16;
340         description
341           "This parameter indicates the number of beamFormingProperties entries.";
342       }
343
344       list beamforming-properties {
345         key beam-id;
346         description
347           "Array for the beamforming properties at O-RU.
348           These parameters can be used by the beamforming control by the NETCONF client.
349           'numberOfBeamformingProperties' indicaets the size of the array.";
350
351         uses beamforming-properties-element;
352       }
353     }
354   }
355
356   grouping operational-properties {
357     description
358       "Grouping for operational properties";
359
360     leaf number-of-writeable-beamforming-files {
361       type uint8  {
362         range "1 .. max";
363       }
364       mandatory true;
365       description
366         "This leaf indicates the maximum number of writeable beamforming files
367         containing beamweights and/or attributes that the O-RU can store, taking
368         into account the maximum number of beam-IDs as defined by 3GPP
369         TS38.214 v15.x.x";
370     }
371
372     leaf update-bf-non-delete {
373       type boolean;
374       default false;
375       description
376         "When set to TRUE, indicates that an O-RU supports the capability
377         to apply the modified beamforming weight information by using rpc
378         activate-beamforming-weight without deletion of tx-array-carriers and
379         rx-array-carriers in advance, i.e., to a deactivated carrier";
380     }
381
382     leaf persistent-bf-files {
383       type boolean;
384       default false;
385       description
386         "When set to TRUE, indicates that the O-RU supports the capability
387          to store the modified beamforming weight information file in the
388          reset persistent memory";
389     }
390   }
391
392   grouping beamforming-supported-type {
393     description
394       "Grouping for type of beamforming supported";
395
396     leaf beamforming-trough-attributes-supported {
397       type boolean;
398       description
399         "Informs if beamforming can be controlled providing attributes to O-RU
400           (like angles, beamwidth).";
401     }
402
403     leaf beamforming-trough-ue-channel-info-supported {
404       type boolean;
405       description
406         "Informs if beamforming can be controlled by UE information.";
407     }
408   }
409
410   grouping beamforming-config {
411     description
412       "Grouping for beamforming configuration";
413
414     list per-band-config {
415       key band-number;
416       description "beamforming information per band";
417
418       uses per-band-config-element;
419     }
420
421     container ue-specific-beamforming {
422       presence
423         "Indicates that the O-RU supports optional Section Type '6' Fields
424         (used for sending channel information for a specific UE)";
425       config false;
426       description
427         "Information related to supput by the O-RU of Section Type 6 for
428         signalling UE-specific channel information to the O-RU";
429       leaf max-number-of-ues {
430         type uint8;
431         description
432           "Indicates tha maximum number of UE -specific channel information
433           data sets supported by the O-RU";
434       }
435     }
436     container operational-properties {
437       if-feature MODIFY-BF-CONFIG;
438       description "properties for dynamic beam weight/attribute support";
439
440       uses operational-properties;
441     }
442   }
443
444   container beamforming-config {
445     config false;
446     description
447       "A set of configuration data for the O-RU's beam forming functionality";
448
449     uses beamforming-config;
450     uses beamforming-supported-type;
451   }
452
453
454   rpc activate-beamforming-config {
455     if-feature MODIFY-BF-CONFIG;
456     description
457       "rpc to activate beamforming config information by indicating the file
458       stored in the folder O-RAN/beam-weights in advance";
459     input {
460       leaf beamforming-config-file {
461         type string;
462         mandatory true;
463         description
464           "file name stored in O-RAN/beamforming/ folder is indicated";
465       }
466
467       uses band-num;
468     }
469     output {
470       leaf status {
471         type enumeration {
472           enum ACCEPTED {
473             description "O-RU has accepted the beamforming weight/attribute file";
474           }
475           enum REJECTED {
476             description
477               "O-RU has rejected the beamforming weight/attribute file. The O-RU
478               should then use the default beamforming file.";
479           }
480         }
481         mandatory true;
482         description "Status of activation of beamforming config information";
483       }
484       leaf error-message {
485         when "../status='REJECTED'";
486         type string;
487         description
488           "Detailed error Message when the status is rejected, e.g.,
489            because new beam forming file is attempted to be applied to a
490            carrier which is still active, or the beam-id does not exist.";
491       }
492     }
493   }
494
495
496   //notification statement
497   notification beamforming-information-update {
498     uses band-num;
499     description
500       "this notification indicates that the beamforming properties are updated for particular band";
501   }
502 }