ng-form-foundry 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +63 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +12 -0
  4. package/src/lib/core/dynamic-recursive-forms-builder.ts +129 -0
  5. package/src/lib/core/utils.ts +33 -0
  6. package/src/lib/dynamic-recursive-form/anon-leaf-renderer/anon-leaf-renderer.component.html +31 -0
  7. package/src/lib/dynamic-recursive-form/anon-leaf-renderer/anon-leaf-renderer.component.scss +11 -0
  8. package/src/lib/dynamic-recursive-form/anon-leaf-renderer/anon-leaf-renderer.component.spec.ts +22 -0
  9. package/src/lib/dynamic-recursive-form/anon-leaf-renderer/anon-leaf-renderer.component.ts +39 -0
  10. package/src/lib/dynamic-recursive-form/dynamic-recursive-form.component.html +168 -0
  11. package/src/lib/dynamic-recursive-form/dynamic-recursive-form.component.scss +128 -0
  12. package/src/lib/dynamic-recursive-form/dynamic-recursive-form.component.spec.ts +23 -0
  13. package/src/lib/dynamic-recursive-form/dynamic-recursive-form.component.ts +71 -0
  14. package/src/lib/dynamic-recursive-form/dynamic-recursive-form.stories.ts +36 -0
  15. package/src/lib/dynamic-recursive-form/leaf-enum-renderer/leaf-enum-renderer.component.html +8 -0
  16. package/src/lib/dynamic-recursive-form/leaf-enum-renderer/leaf-enum-renderer.component.scss +9 -0
  17. package/src/lib/dynamic-recursive-form/leaf-enum-renderer/leaf-enum-renderer.component.spec.ts +22 -0
  18. package/src/lib/dynamic-recursive-form/leaf-enum-renderer/leaf-enum-renderer.component.ts +21 -0
  19. package/src/lib/dynamic-recursive-form/leaf-list-renderer/leaf-list-renderer.component.html +31 -0
  20. package/src/lib/dynamic-recursive-form/leaf-list-renderer/leaf-list-renderer.component.scss +57 -0
  21. package/src/lib/dynamic-recursive-form/leaf-list-renderer/leaf-list-renderer.component.spec.ts +23 -0
  22. package/src/lib/dynamic-recursive-form/leaf-list-renderer/leaf-list-renderer.component.ts +52 -0
  23. package/src/lib/dynamic-recursive-form/leaf-renderer/leaf-renderer.component.html +17 -0
  24. package/src/lib/dynamic-recursive-form/leaf-renderer/leaf-renderer.component.scss +11 -0
  25. package/src/lib/dynamic-recursive-form/leaf-renderer/leaf-renderer.component.spec.ts +22 -0
  26. package/src/lib/dynamic-recursive-form/leaf-renderer/leaf-renderer.component.ts +41 -0
  27. package/src/lib/dynamic-recursive-form/node-group-list-renderer/node-group-list-renderer.component.html +24 -0
  28. package/src/lib/dynamic-recursive-form/node-group-list-renderer/node-group-list-renderer.component.scss +48 -0
  29. package/src/lib/dynamic-recursive-form/node-group-list-renderer/node-group-list-renderer.component.spec.ts +22 -0
  30. package/src/lib/dynamic-recursive-form/node-group-list-renderer/node-group-list-renderer.component.ts +101 -0
  31. package/src/lib/types/dynamic-recursive.types.ts +97 -0
  32. package/src/lib/types/examples/complex-oai.ts +938 -0
  33. package/src/public-api.ts +12 -0
  34. package/tsconfig.lib.json +18 -0
  35. package/tsconfig.lib.prod.json +11 -0
  36. package/tsconfig.spec.json +14 -0
@@ -0,0 +1,938 @@
1
+ import { NodeGroup } from '../dynamic-recursive.types';
2
+
3
+ export const SnssaiSchema: NodeGroup = {
4
+ kind: 'nodeGroup',
5
+ name: 'snssai',
6
+ label: 'SNSSAI',
7
+ appearance: {
8
+ flatten: true
9
+ },
10
+ children: {
11
+ sst: { kind: 'leaf', type: 'number', name: 'sst' },
12
+ sd: { kind: 'leaf', type: 'number', name: 'sd' },
13
+ },
14
+ };
15
+
16
+ export const PLMNSchema: NodeGroup = {
17
+ kind: 'nodeGroup',
18
+ name: 'plmn',
19
+ label: 'PLMN',
20
+ children: {
21
+ mcc: { kind: 'leaf', type: 'number', name: 'mcc' },
22
+ mnc: { kind: 'leaf', type: 'number', name: 'mnc' },
23
+ mnc_length: { kind: 'leaf', type: 'number', name: 'mnc_length' },
24
+ snssaiList: {
25
+ kind: 'nodeGroupList',
26
+ name: 'snssaiList',
27
+ type: SnssaiSchema,
28
+ },
29
+ },
30
+ };
31
+
32
+ export const SCTPSchema: NodeGroup = {
33
+ kind: 'nodeGroup',
34
+ name: 'SCTP',
35
+ appearance: {
36
+ flatten: true,
37
+ },
38
+ children: {
39
+ SCTP_INSTREAMS: { kind: 'leaf', type: 'number', name: 'SCTP_INSTREAMS' },
40
+ SCTP_OUTSTREAMS: { kind: 'leaf', type: 'number', name: 'SCTP_OUTSTREAMS' },
41
+ },
42
+ };
43
+
44
+ export const ServingCellConfigCommonSchema: NodeGroup = {
45
+ kind: 'nodeGroup',
46
+ name: 'servingCellConfigCommon_item',
47
+ label: 'Serving Cell Common',
48
+ children: {
49
+ physCellId: { kind: 'leaf', type: 'number', name: 'physCellId' },
50
+ absoluteFrequencySSB: {
51
+ kind: 'leaf',
52
+ type: 'number',
53
+ name: 'absoluteFrequencySSB',
54
+ },
55
+ dl_frequencyBand: {
56
+ kind: 'leaf',
57
+ type: 'number',
58
+ name: 'dl_frequencyBand',
59
+ },
60
+ dl_absoluteFrequencyPointA: {
61
+ kind: 'leaf',
62
+ type: 'number',
63
+ name: 'dl_absoluteFrequencyPointA',
64
+ },
65
+ dl_offstToCarrier: {
66
+ kind: 'leaf',
67
+ type: 'number',
68
+ name: 'dl_offstToCarrier',
69
+ },
70
+ dl_subcarrierSpacing: {
71
+ kind: 'leaf',
72
+ type: 'number',
73
+ name: 'dl_subcarrierSpacing',
74
+ },
75
+ dl_carrierBandwidth: {
76
+ kind: 'leaf',
77
+ type: 'number',
78
+ name: 'dl_carrierBandwidth',
79
+ },
80
+ initialDLBWPlocationAndBandwidth: {
81
+ kind: 'leaf',
82
+ type: 'number',
83
+ name: 'initialDLBWPlocationAndBandwidth',
84
+ },
85
+ initialDLBWPsubcarrierSpacing: {
86
+ kind: 'leaf',
87
+ type: 'number',
88
+ name: 'initialDLBWPsubcarrierSpacing',
89
+ },
90
+ initialDLBWPcontrolResourceSetZero: {
91
+ kind: 'leaf',
92
+ type: 'number',
93
+ name: 'initialDLBWPcontrolResourceSetZero',
94
+ },
95
+ initialDLBWPsearchSpaceZero: {
96
+ kind: 'leaf',
97
+ type: 'number',
98
+ name: 'initialDLBWPsearchSpaceZero',
99
+ },
100
+ ul_frequencyBand: {
101
+ kind: 'leaf',
102
+ type: 'number',
103
+ name: 'ul_frequencyBand',
104
+ },
105
+ ul_offstToCarrier: {
106
+ kind: 'leaf',
107
+ type: 'number',
108
+ name: 'ul_offstToCarrier',
109
+ },
110
+ ul_subcarrierSpacing: {
111
+ kind: 'leaf',
112
+ type: 'number',
113
+ name: 'ul_subcarrierSpacing',
114
+ },
115
+ ul_carrierBandwidth: {
116
+ kind: 'leaf',
117
+ type: 'number',
118
+ name: 'ul_carrierBandwidth',
119
+ },
120
+ pMax: { kind: 'leaf', type: 'number', name: 'pMax' },
121
+ initialULBWPlocationAndBandwidth: {
122
+ kind: 'leaf',
123
+ type: 'number',
124
+ name: 'initialULBWPlocationAndBandwidth',
125
+ },
126
+ initialULBWPsubcarrierSpacing: {
127
+ kind: 'leaf',
128
+ type: 'number',
129
+ name: 'initialULBWPsubcarrierSpacing',
130
+ },
131
+ prach_ConfigurationIndex: {
132
+ kind: 'leaf',
133
+ type: 'number',
134
+ name: 'prach_ConfigurationIndex',
135
+ },
136
+ prach_msg1_FDM: { kind: 'leaf', type: 'number', name: 'prach_msg1_FDM' },
137
+ prach_msg1_FrequencyStart: {
138
+ kind: 'leaf',
139
+ type: 'number',
140
+ name: 'prach_msg1_FrequencyStart',
141
+ },
142
+ zeroCorrelationZoneConfig: {
143
+ kind: 'leaf',
144
+ type: 'number',
145
+ name: 'zeroCorrelationZoneConfig',
146
+ },
147
+ preambleReceivedTargetPower: {
148
+ kind: 'leaf',
149
+ type: 'number',
150
+ name: 'preambleReceivedTargetPower',
151
+ },
152
+ preambleTransMax: {
153
+ kind: 'leaf',
154
+ type: 'number',
155
+ name: 'preambleTransMax',
156
+ },
157
+ powerRampingStep: {
158
+ kind: 'leaf',
159
+ type: 'number',
160
+ name: 'powerRampingStep',
161
+ },
162
+ ra_ResponseWindow: {
163
+ kind: 'leaf',
164
+ type: 'number',
165
+ name: 'ra_ResponseWindow',
166
+ },
167
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR: {
168
+ kind: 'leaf',
169
+ type: 'number',
170
+ name: 'ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR',
171
+ },
172
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB: {
173
+ kind: 'leaf',
174
+ type: 'number',
175
+ name: 'ssb_perRACH_OccasionAndCB_PreamblesPerSSB',
176
+ },
177
+ ra_ContentionResolutionTimer: {
178
+ kind: 'leaf',
179
+ type: 'number',
180
+ name: 'ra_ContentionResolutionTimer',
181
+ },
182
+ rsrp_ThresholdSSB: {
183
+ kind: 'leaf',
184
+ type: 'number',
185
+ name: 'rsrp_ThresholdSSB',
186
+ },
187
+ prach_RootSequenceIndex_PR: {
188
+ kind: 'leaf',
189
+ type: 'number',
190
+ name: 'prach_RootSequenceIndex_PR',
191
+ },
192
+ prach_RootSequenceIndex: {
193
+ kind: 'leaf',
194
+ type: 'number',
195
+ name: 'prach_RootSequenceIndex',
196
+ },
197
+ msg1_SubcarrierSpacing: {
198
+ kind: 'leaf',
199
+ type: 'number',
200
+ name: 'msg1_SubcarrierSpacing',
201
+ },
202
+ restrictedSetConfig: {
203
+ kind: 'leaf',
204
+ type: 'number',
205
+ name: 'restrictedSetConfig',
206
+ },
207
+ msg3_DeltaPreamble: {
208
+ kind: 'leaf',
209
+ type: 'number',
210
+ name: 'msg3_DeltaPreamble',
211
+ },
212
+ p0_NominalWithGrant: {
213
+ kind: 'leaf',
214
+ type: 'number',
215
+ name: 'p0_NominalWithGrant',
216
+ },
217
+ pucchGroupHopping: {
218
+ kind: 'leaf',
219
+ type: 'number',
220
+ name: 'pucchGroupHopping',
221
+ },
222
+ hoppingId: { kind: 'leaf', type: 'number', name: 'hoppingId' },
223
+ p0_nominal: { kind: 'leaf', type: 'number', name: 'p0_nominal' },
224
+ ssb_PositionsInBurst_Bitmap: {
225
+ kind: 'leaf',
226
+ type: 'number',
227
+ name: 'ssb_PositionsInBurst_Bitmap',
228
+ },
229
+ ssb_periodicityServingCell: {
230
+ kind: 'leaf',
231
+ type: 'number',
232
+ name: 'ssb_periodicityServingCell',
233
+ },
234
+ dmrs_TypeA_Position: {
235
+ kind: 'leaf',
236
+ type: 'number',
237
+ name: 'dmrs_TypeA_Position',
238
+ },
239
+ subcarrierSpacing: {
240
+ kind: 'leaf',
241
+ type: 'number',
242
+ name: 'subcarrierSpacing',
243
+ },
244
+ referenceSubcarrierSpacing: {
245
+ kind: 'leaf',
246
+ type: 'number',
247
+ name: 'referenceSubcarrierSpacing',
248
+ },
249
+ dl_UL_TransmissionPeriodicity: {
250
+ kind: 'leaf',
251
+ type: 'number',
252
+ name: 'dl_UL_TransmissionPeriodicity',
253
+ },
254
+ nrofDownlinkSlots: {
255
+ kind: 'leaf',
256
+ type: 'number',
257
+ name: 'nrofDownlinkSlots',
258
+ },
259
+ nrofDownlinkSymbols: {
260
+ kind: 'leaf',
261
+ type: 'number',
262
+ name: 'nrofDownlinkSymbols',
263
+ },
264
+ nrofUplinkSlots: { kind: 'leaf', type: 'number', name: 'nrofUplinkSlots' },
265
+ nrofUplinkSymbols: {
266
+ kind: 'leaf',
267
+ type: 'number',
268
+ name: 'nrofUplinkSymbols',
269
+ },
270
+ ssPBCH_BlockPower: {
271
+ kind: 'leaf',
272
+ type: 'number',
273
+ name: 'ssPBCH_BlockPower',
274
+ },
275
+ },
276
+ };
277
+
278
+ export const RUConfigSchema: NodeGroup = {
279
+ kind: 'nodeGroup',
280
+ name: 'ru_config',
281
+ label: 'RU',
282
+ children: {
283
+ iq_width: { kind: 'leaf', type: 'number', name: 'iq_width' },
284
+ iq_width_prach: { kind: 'leaf', type: 'number', name: 'iq_width_prach' },
285
+ },
286
+ };
287
+
288
+ export const FhConfigItemSchema: NodeGroup = {
289
+ kind: 'nodeGroup',
290
+ name: 'fh_config_item',
291
+ label: 'FH Configuration',
292
+ children: {
293
+ T1a_cp_dl: {
294
+ kind: 'leafList',
295
+ name: 'T1a_cp_dl',
296
+ type: 'number',
297
+ },
298
+ T1a_cp_ul: {
299
+ kind: 'leafList',
300
+ name: 'T1a_cp_ul',
301
+ type: 'number',
302
+ },
303
+ T1a_up: {
304
+ kind: 'leafList',
305
+ name: 'T1a_up',
306
+ type: 'number',
307
+ },
308
+ Ta4: {
309
+ kind: 'leafList',
310
+ name: 'Ta4',
311
+ type: 'number',
312
+ },
313
+ ru_config: RUConfigSchema,
314
+ },
315
+ };
316
+
317
+ export const Fhi72Schema: NodeGroup = {
318
+ kind: 'nodeGroup',
319
+ name: 'fhi_72',
320
+ label: 'Fronthaul',
321
+ children: {
322
+ dpdk_devices: {
323
+ kind: 'leafList',
324
+ name: 'dpdk_devices',
325
+ label: 'DPDK Device',
326
+ type: 'string',
327
+ },
328
+ system_core: {
329
+ kind: 'leaf',
330
+ type: 'number',
331
+ name: 'system_core',
332
+ label: 'System Core',
333
+ },
334
+ io_core: {
335
+ kind: 'leaf',
336
+ type: 'number',
337
+ name: 'io_core',
338
+ label: 'IO Core',
339
+ },
340
+ worker_cores: {
341
+ kind: 'leafList',
342
+ name: 'worker_cores',
343
+ label: 'Worker Core',
344
+ type: 'number',
345
+ },
346
+ ru_addr: {
347
+ kind: 'leafList',
348
+ name: 'ru_addr',
349
+ label: 'RU Address',
350
+ type: 'string',
351
+ },
352
+ mtu: { kind: 'leaf', type: 'number', name: 'mtu', label: 'MTU' },
353
+ fh_config: {
354
+ kind: 'nodeGroupList',
355
+ name: 'fh_config',
356
+ label: 'FH Configuration',
357
+ type: FhConfigItemSchema,
358
+ },
359
+ },
360
+ };
361
+
362
+ export const AmfIpAddressSchema: NodeGroup = {
363
+ kind: 'nodeGroup',
364
+ name: 'amf_ip_address_item',
365
+ label: 'AMF IP Address',
366
+ children: {
367
+ ipv4: { kind: 'leaf', type: 'string', name: 'ipv4' },
368
+ ipv6: { kind: 'leaf', type: 'string', name: 'ipv6' },
369
+ },
370
+ };
371
+
372
+ export const NetworkInterfacesSchema: NodeGroup = {
373
+ kind: 'nodeGroup',
374
+ name: 'NETWORK_INTERFACES',
375
+ label: 'Network Interfaces',
376
+ children: {
377
+ GNB_IPV4_ADDRESS_FOR_NG_AMF: {
378
+ kind: 'leaf',
379
+ type: 'string',
380
+ name: 'GNB_IPV4_ADDRESS_FOR_NG_AMF',
381
+ },
382
+ GNB_IPV4_ADDRESS_FOR_NGU: {
383
+ kind: 'leaf',
384
+ type: 'string',
385
+ name: 'GNB_IPV4_ADDRESS_FOR_NGU',
386
+ },
387
+ GNB_PORT_FOR_S1U: {
388
+ kind: 'leaf',
389
+ type: 'number',
390
+ name: 'GNB_PORT_FOR_S1U',
391
+ },
392
+ },
393
+ };
394
+
395
+ export const GnbSchema: NodeGroup = {
396
+ kind: 'nodeGroup',
397
+ name: 'gNB',
398
+ label: 'gNB',
399
+ children: {
400
+ gNB_ID: { kind: 'leaf', type: 'number', name: 'gNB_ID' },
401
+ gNB_DU_ID: { kind: 'leaf', type: 'number', name: 'gNB_DU_ID' },
402
+ gNB_name: { kind: 'leaf', type: 'string', name: 'gNB_name' },
403
+ tracking_area_code: {
404
+ kind: 'leaf',
405
+ type: 'number',
406
+ name: 'tracking_area_code',
407
+ label: 'Tracking Area Code',
408
+ },
409
+ plmn_list: { kind: 'nodeGroupList', name: 'plmn_list', label: "PLMN", type: PLMNSchema },
410
+ nr_cellid: { kind: 'leaf', type: 'number', name: 'nr_cellid' },
411
+ pdsch_AntennaPorts_XP: {
412
+ kind: 'leaf',
413
+ type: 'number',
414
+ name: 'pdsch_AntennaPorts_XP',
415
+ label: 'PDSCH Antenna Ports',
416
+ },
417
+ pdsch_AntennaPorts_N1: {
418
+ kind: 'leaf',
419
+ type: 'number',
420
+ name: 'pdsch_AntennaPorts_N1',
421
+ },
422
+ maxMIMO_layers: { kind: 'leaf', type: 'number', name: 'maxMIMO_layers' },
423
+ pusch_AntennaPorts: {
424
+ kind: 'leaf',
425
+ type: 'number',
426
+ name: 'pusch_AntennaPorts',
427
+ },
428
+ do_CSIRS: { kind: 'leaf', type: 'number', name: 'do_CSIRS' },
429
+ do_SRS: { kind: 'leaf', type: 'number', name: 'do_SRS' },
430
+ sib1_tda: { kind: 'leaf', type: 'number', name: 'sib1_tda' },
431
+ force_UL256qam_off: {
432
+ kind: 'leaf',
433
+ type: 'number',
434
+ name: 'force_UL256qam_off',
435
+ },
436
+ servingCellConfigCommon: {
437
+ kind: 'nodeGroupList',
438
+ name: 'servingCellConfigCommon',
439
+ label: 'Serving Cell Config Common List',
440
+ type: ServingCellConfigCommonSchema,
441
+ },
442
+ SCTP: SCTPSchema,
443
+ // amf_ip_address: { kind: 'nodeGroupList', name: 'amf_ip_address', type: AmfIpAddressSchema },
444
+ // NETWORK_INTERFACES: NetworkInterfacesSchema,
445
+ },
446
+ };
447
+
448
+ export const MACRLCSchema: NodeGroup = {
449
+ kind: 'nodeGroup',
450
+ name: 'MACRLC',
451
+ label: 'MAC/RLC Configuration',
452
+ children: {
453
+ num_cc: { kind: 'leaf', type: 'number', name: 'num_cc' },
454
+ tr_s_preference: { kind: 'leaf', type: 'string', name: 'tr_s_preference' },
455
+ tr_n_preference: { kind: 'leaf', type: 'string', name: 'tr_n_preference' },
456
+ local_n_address: { kind: 'leaf', type: 'string', name: 'local_n_address' },
457
+ remote_n_address: {
458
+ kind: 'leaf',
459
+ type: 'string',
460
+ name: 'remote_n_address',
461
+ },
462
+ local_n_portc: { kind: 'leaf', type: 'number', name: 'local_n_portc' },
463
+ local_n_portd: { kind: 'leaf', type: 'number', name: 'local_n_portd' },
464
+ remote_n_portc: { kind: 'leaf', type: 'number', name: 'remote_n_portc' },
465
+ remote_n_portd: { kind: 'leaf', type: 'number', name: 'remote_n_portd' },
466
+ pusch_TargetSNRx10: {
467
+ kind: 'leaf',
468
+ type: 'number',
469
+ name: 'pusch_TargetSNRx10',
470
+ },
471
+ pucch_TargetSNRx10: {
472
+ kind: 'leaf',
473
+ type: 'number',
474
+ name: 'pucch_TargetSNRx10',
475
+ },
476
+ dl_bler_target_upper: {
477
+ kind: 'leaf',
478
+ type: 'number',
479
+ name: 'dl_bler_target_upper',
480
+ },
481
+ dl_bler_target_lower: {
482
+ kind: 'leaf',
483
+ type: 'number',
484
+ name: 'dl_bler_target_lower',
485
+ },
486
+ ul_bler_target_upper: {
487
+ kind: 'leaf',
488
+ type: 'number',
489
+ name: 'ul_bler_target_upper',
490
+ },
491
+ ul_bler_target_lower: {
492
+ kind: 'leaf',
493
+ type: 'number',
494
+ name: 'ul_bler_target_lower',
495
+ },
496
+ pusch_FailureThres: {
497
+ kind: 'leaf',
498
+ type: 'number',
499
+ name: 'pusch_FailureThres',
500
+ },
501
+ ulsch_max_frame_inactivity: {
502
+ kind: 'leaf',
503
+ type: 'number',
504
+ name: 'ulsch_max_frame_inactivity',
505
+ },
506
+ ul_max_mcs: { kind: 'leaf', type: 'number', name: 'ul_max_mcs' },
507
+ min_grant_prb: { kind: 'leaf', type: 'number', name: 'min_grant_prb' },
508
+ },
509
+ };
510
+
511
+ export const L1Schema: NodeGroup = {
512
+ kind: 'nodeGroup',
513
+ name: 'L1',
514
+ label: 'L1 Configuration',
515
+ children: {
516
+ num_cc: { kind: 'leaf', type: 'number', name: 'num_cc' },
517
+ tr_n_preference: { kind: 'leaf', type: 'string', name: 'tr_n_preference' },
518
+ prach_dtx_threshold: {
519
+ kind: 'leaf',
520
+ type: 'number',
521
+ name: 'prach_dtx_threshold',
522
+ },
523
+ pucch0_dtx_threshold: {
524
+ kind: 'leaf',
525
+ type: 'number',
526
+ name: 'pucch0_dtx_threshold',
527
+ },
528
+ pusch_dtx_threshold: {
529
+ kind: 'leaf',
530
+ type: 'number',
531
+ name: 'pusch_dtx_threshold',
532
+ },
533
+ max_ldpc_iterations: {
534
+ kind: 'leaf',
535
+ type: 'number',
536
+ name: 'max_ldpc_iterations',
537
+ },
538
+ tx_amp_backoff_dB: {
539
+ kind: 'leaf',
540
+ type: 'number',
541
+ name: 'tx_amp_backoff_dB',
542
+ },
543
+ L1_rx_thread_core: {
544
+ kind: 'leaf',
545
+ type: 'number',
546
+ name: 'L1_rx_thread_core',
547
+ },
548
+ L1_tx_thread_core: {
549
+ kind: 'leaf',
550
+ type: 'number',
551
+ name: 'L1_tx_thread_core',
552
+ },
553
+ phase_compensation: {
554
+ kind: 'leaf',
555
+ type: 'number',
556
+ name: 'phase_compensation',
557
+ },
558
+ ofdm_offset_divisor: {
559
+ kind: 'leaf',
560
+ type: 'number',
561
+ name: 'ofdm_offset_divisor',
562
+ },
563
+ },
564
+ };
565
+
566
+ export const RUSchema: NodeGroup = {
567
+ kind: 'nodeGroup',
568
+ name: 'RU',
569
+ label: 'RU Configuration',
570
+ children: {
571
+ local_rf: { kind: 'leaf', type: 'string', name: 'local_rf' },
572
+ nb_tx: { kind: 'leaf', type: 'number', name: 'nb_tx' },
573
+ nb_rx: { kind: 'leaf', type: 'number', name: 'nb_rx' },
574
+ att_tx: { kind: 'leaf', type: 'number', name: 'att_tx' },
575
+ att_rx: { kind: 'leaf', type: 'number', name: 'att_rx' },
576
+ bands: {
577
+ kind: 'leafList',
578
+ name: 'bands',
579
+ label: 'Bands',
580
+ type: 'number',
581
+ },
582
+ max_pdschReferenceSignalPower: {
583
+ kind: 'leaf',
584
+ type: 'number',
585
+ name: 'max_pdschReferenceSignalPower',
586
+ },
587
+ max_rxgain: { kind: 'leaf', type: 'number', name: 'max_rxgain' },
588
+ sf_extension: { kind: 'leaf', type: 'number', name: 'sf_extension' },
589
+ eNB_instances: {
590
+ kind: 'leafList',
591
+ name: 'eNB_instances',
592
+ type: 'number',
593
+ },
594
+ ru_thread_core: { kind: 'leaf', type: 'number', name: 'ru_thread_core' },
595
+ sl_ahead: { kind: 'leaf', type: 'number', name: 'sl_ahead' },
596
+ tr_preference: { kind: 'leaf', type: 'string', name: 'tr_preference' },
597
+ do_precoding: { kind: 'leaf', type: 'number', name: 'do_precoding' },
598
+ },
599
+ };
600
+
601
+ export const LogOptionsEnum = [
602
+ 'error',
603
+ 'warn',
604
+ 'analysis',
605
+ 'info',
606
+ 'debug',
607
+ 'trace',
608
+ ];
609
+
610
+ export const LogEnumLabels = [
611
+ 'Error',
612
+ 'Warning',
613
+ 'Analysis',
614
+ 'Information',
615
+ 'Debug',
616
+ 'Trace',
617
+ ];
618
+
619
+ export const LogConfigSchema: NodeGroup = {
620
+ kind: 'nodeGroup',
621
+ name: 'log_config',
622
+ label: 'Log Configuration',
623
+ children: {
624
+ global_log_level: {
625
+ kind: 'leaf',
626
+ type: 'enum',
627
+ name: 'global_log_level',
628
+ enum: LogOptionsEnum,
629
+ enumLabel: LogEnumLabels,
630
+ },
631
+ hw_log_level: {
632
+ kind: 'leaf',
633
+ type: 'enum',
634
+ name: 'hw_log_level',
635
+ enum: LogOptionsEnum,
636
+ enumLabel: LogEnumLabels,
637
+ },
638
+ phy_log_level: {
639
+ kind: 'leaf',
640
+ type: 'enum',
641
+ name: 'phy_log_level',
642
+ enum: LogOptionsEnum,
643
+ enumLabel: LogEnumLabels,
644
+ },
645
+ mac_log_level: {
646
+ kind: 'leaf',
647
+ type: 'enum',
648
+ name: 'mac_log_level',
649
+ enum: LogOptionsEnum,
650
+ enumLabel: LogEnumLabels,
651
+ },
652
+ rlc_log_level: {
653
+ kind: 'leaf',
654
+ type: 'enum',
655
+ name: 'rlc_log_level',
656
+ enum: LogOptionsEnum,
657
+ enumLabel: LogEnumLabels,
658
+ },
659
+ pdcp_log_level: {
660
+ kind: 'leaf',
661
+ type: 'enum',
662
+ name: 'pdcp_log_level',
663
+ enum: LogOptionsEnum,
664
+ enumLabel: LogEnumLabels,
665
+ },
666
+ rrc_log_level: {
667
+ kind: 'leaf',
668
+ type: 'enum',
669
+ name: 'rrc_log_level',
670
+ enum: LogOptionsEnum,
671
+ enumLabel: LogEnumLabels,
672
+ },
673
+ ngap_log_level: {
674
+ kind: 'leaf',
675
+ type: 'enum',
676
+ name: 'ngap_log_level',
677
+ enum: LogOptionsEnum,
678
+ enumLabel: LogEnumLabels,
679
+ },
680
+ f1ap_log_level: {
681
+ kind: 'leaf',
682
+ type: 'enum',
683
+ name: 'f1ap_log_level',
684
+ enum: LogOptionsEnum,
685
+ enumLabel: LogEnumLabels,
686
+ },
687
+ },
688
+ };
689
+
690
+ export const OAIGnbSchema: NodeGroup = {
691
+ kind: 'nodeGroup',
692
+ name: 'du_config',
693
+ label: 'DU Configuration',
694
+ root: true,
695
+ children: {
696
+ Asn1_verbosity: { kind: 'leaf', type: 'string', name: 'Asn1_verbosity' },
697
+ Active_gNBs: {
698
+ kind: 'leafList',
699
+ name: 'Active_gNBs',
700
+ type: 'string',
701
+ },
702
+ gNBs: { kind: 'nodeGroupList', name: 'gNBs', type: GnbSchema },
703
+ MACRLCs: { kind: 'nodeGroupList', name: 'MACRLCs', type: MACRLCSchema },
704
+ L1s: { kind: 'nodeGroupList', name: 'L1s', type: L1Schema },
705
+ RUs: { kind: 'nodeGroupList', name: 'RUs', type: RUSchema },
706
+ log_config: LogConfigSchema,
707
+ fhi_72: Fhi72Schema,
708
+ },
709
+ };
710
+
711
+
712
+
713
+ export const DUConfigSchema: NodeGroup = {
714
+ kind: 'nodeGroup',
715
+ name: 'du_config',
716
+ label: 'DU Configuration',
717
+ root: true,
718
+ children: {
719
+ Active_gNBs: {
720
+ kind: 'leafList',
721
+ name: 'Active_gNBs',
722
+ label: 'Active gNBs',
723
+ type: 'string',
724
+ },
725
+ Asn1_verbosity: {
726
+ kind: 'leaf',
727
+ type: 'string',
728
+ name: 'Asn1_verbosity',
729
+ label: 'ASN1 verbosity',
730
+ },
731
+ gNBs: {
732
+ kind: 'nodeGroupList',
733
+ name: 'gNBs',
734
+ label: 'gNBs',
735
+ type: GnbSchema,
736
+ },
737
+ MACRLCs: {
738
+ kind: 'nodeGroupList',
739
+ name: 'MACRLCs',
740
+ label: 'MACRLCs',
741
+ type: MACRLCSchema,
742
+ },
743
+ L1s: {
744
+ kind: 'nodeGroupList',
745
+ name: 'L1s',
746
+ label: 'L1s',
747
+ type: L1Schema,
748
+ },
749
+ RUs: {
750
+ kind: 'nodeGroupList',
751
+ name: 'RUs',
752
+ label: 'RUs',
753
+ type: RUSchema,
754
+ },
755
+ fhi_72: Fhi72Schema,
756
+ log_config: LogConfigSchema,
757
+ },
758
+ };
759
+
760
+ export const sampleValue = {
761
+ Active_gNBs: ['aircell-benetel-550-1-100mhz-3748'],
762
+ Asn1_verbosity: 'none',
763
+ gNBs: [
764
+ {
765
+ gNB_ID: 3584,
766
+ gNB_DU_ID: 3584,
767
+ gNB_name: 'aircell-benetel-550-1-100mhz-3748',
768
+ tracking_area_code: 1,
769
+ plmn_list: [
770
+ {
771
+ mcc: 1,
772
+ mnc: 1,
773
+ mnc_length: 2,
774
+ snssaiList: [
775
+ {
776
+ sst: 1,
777
+ sd: 16777215,
778
+ },
779
+ ],
780
+ },
781
+ ],
782
+ nr_cellid: 3,
783
+ pdsch_AntennaPorts_XP: 2,
784
+ pdsch_AntennaPorts_N1: 2,
785
+ maxMIMO_layers: 1,
786
+ pusch_AntennaPorts: 4,
787
+ do_CSIRS: 1,
788
+ do_SRS: 0,
789
+ sib1_tda: 15,
790
+ force_UL256qam_off: 1,
791
+ servingCellConfigCommon: [
792
+ {
793
+ physCellId: 0,
794
+ absoluteFrequencySSB: 649920,
795
+ dl_frequencyBand: 78,
796
+ dl_absoluteFrequencyPointA: 646644,
797
+ dl_offstToCarrier: 0,
798
+ dl_subcarrierSpacing: 1,
799
+ dl_carrierBandwidth: 273,
800
+ initialDLBWPlocationAndBandwidth: 1099,
801
+ initialDLBWPsubcarrierSpacing: 1,
802
+ initialDLBWPcontrolResourceSetZero: 11,
803
+ initialDLBWPsearchSpaceZero: 0,
804
+ ul_frequencyBand: 78,
805
+ ul_offstToCarrier: 0,
806
+ ul_subcarrierSpacing: 1,
807
+ ul_carrierBandwidth: 273,
808
+ pMax: 23,
809
+ initialULBWPlocationAndBandwidth: 1099,
810
+ initialULBWPsubcarrierSpacing: 1,
811
+ prach_ConfigurationIndex: 159,
812
+ prach_msg1_FDM: 0,
813
+ prach_msg1_FrequencyStart: 0,
814
+ zeroCorrelationZoneConfig: 0,
815
+ preambleReceivedTargetPower: -100,
816
+ preambleTransMax: 8,
817
+ powerRampingStep: 3,
818
+ ra_ResponseWindow: 5,
819
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR: 4,
820
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB: 15,
821
+ ra_ContentionResolutionTimer: 7,
822
+ rsrp_ThresholdSSB: 19,
823
+ prach_RootSequenceIndex_PR: 2,
824
+ prach_RootSequenceIndex: 1,
825
+ msg1_SubcarrierSpacing: 1,
826
+ restrictedSetConfig: 0,
827
+ msg3_DeltaPreamble: 2,
828
+ p0_NominalWithGrant: -96,
829
+ pucchGroupHopping: 0,
830
+ hoppingId: 0,
831
+ p0_nominal: -96,
832
+ ssb_PositionsInBurst_Bitmap: 1,
833
+ ssb_periodicityServingCell: 2,
834
+ dmrs_TypeA_Position: 0,
835
+ subcarrierSpacing: 1,
836
+ referenceSubcarrierSpacing: 1,
837
+ dl_UL_TransmissionPeriodicity: 5,
838
+ nrofDownlinkSlots: 2,
839
+ nrofDownlinkSymbols: 6,
840
+ nrofUplinkSlots: 2,
841
+ nrofUplinkSymbols: 4,
842
+ ssPBCH_BlockPower: -25,
843
+ },
844
+ ],
845
+ SCTP: {
846
+ SCTP_INSTREAMS: 2,
847
+ SCTP_OUTSTREAMS: 2,
848
+ },
849
+ },
850
+ ],
851
+ MACRLCs: [
852
+ {
853
+ num_cc: 1,
854
+ tr_s_preference: 'local_L1',
855
+ tr_n_preference: 'f1',
856
+ local_n_address: '192.168.2.235',
857
+ remote_n_address: '192.168.2.188',
858
+ local_n_portc: 500,
859
+ local_n_portd: 2154,
860
+ remote_n_portc: 501,
861
+ remote_n_portd: 2153,
862
+ pusch_TargetSNRx10: 170,
863
+ pucch_TargetSNRx10: 170,
864
+ dl_bler_target_upper: 0.15,
865
+ dl_bler_target_lower: 0.05,
866
+ ul_bler_target_upper: 0.15,
867
+ ul_bler_target_lower: 0.05,
868
+ pusch_FailureThres: 100,
869
+ ulsch_max_frame_inactivity: 1,
870
+ ul_max_mcs: 16,
871
+ min_grant_prb: 1,
872
+ },
873
+ ],
874
+ L1s: [
875
+ {
876
+ num_cc: 1,
877
+ tr_n_preference: 'local_mac',
878
+ prach_dtx_threshold: 100,
879
+ pucch0_dtx_threshold: 80,
880
+ pusch_dtx_threshold: 10,
881
+ max_ldpc_iterations: 15,
882
+ tx_amp_backoff_dB: 12,
883
+ L1_rx_thread_core: 3,
884
+ L1_tx_thread_core: 4,
885
+ phase_compensation: 0,
886
+ },
887
+ ],
888
+ RUs: [
889
+ {
890
+ local_rf: 'no',
891
+ nb_tx: 4,
892
+ nb_rx: 4,
893
+ att_tx: 0,
894
+ att_rx: 0,
895
+ bands: [78],
896
+ max_pdschReferenceSignalPower: -27,
897
+ max_rxgain: 75,
898
+ sf_extension: 0,
899
+ eNB_instances: [0],
900
+ ru_thread_core: 5,
901
+ sl_ahead: 5,
902
+ tr_preference: 'raw_if4p5',
903
+ do_precoding: 0,
904
+ },
905
+ ],
906
+ log_config: {
907
+ global_log_level: 'info',
908
+ hw_log_level: 'info',
909
+ phy_log_level: 'info',
910
+ mac_log_level: 'info',
911
+ rlc_log_level: 'info',
912
+ pdcp_log_level: 'info',
913
+ rrc_log_level: 'info',
914
+ ngap_log_level: 'info',
915
+ f1ap_log_level: 'info',
916
+ },
917
+ fhi_72: {
918
+ dpdk_devices: ['0000:01:11.0', '0000:01:11.1'],
919
+ system_core: 0,
920
+ io_core: 1,
921
+ worker_cores: [2],
922
+ ru_addr: ['8c:1f:64:d1:13:16', '8c:1f:64:d1:13:16'],
923
+ mtu: 9600,
924
+ fh_config: [
925
+ {
926
+ T1a_cp_dl: [419, 470],
927
+ T1a_cp_ul: [285, 336],
928
+ T1a_up: [294, 345],
929
+ Ta4: [0, 200],
930
+ ru_config: {
931
+ iq_width: 9,
932
+ iq_width_prach: 9,
933
+ },
934
+ },
935
+ ],
936
+ },
937
+ };
938
+